2010-02-10 14 views
9

एसओ जैसे टैगिंग सिस्टम कैसे बनाएं?एसओ जैसे टैगिंग सिस्टम कैसे बनाएं?

मैं "टैग" सबमिट करने के लिए अपने एएसपीनेट एमवीसी वेबसाइट पर एक अद्वितीय टेक्स्टबॉक्स का उपयोग कर रहा हूं।

सबसे पहले, मैंने अल्पविराम "एएसपीनेट, सी #, एसक्यूएल सर्वर" के साथ टैग को विभाजित करने का प्रयास किया। यह काम करता है लेकिन यदि उपयोगकर्ता अल्पविराम के साथ टैग अलग करना भूल गया है तो मुझे उस स्ट्रिंग को विभाजित करने में कोई समस्या है।

"एएसपीनेट सी # एसक्यूएल सर्वर": एसक्यूएल सर्वर एक एकल टैग होना चाहिए, दो "एसक्यूएल" + "सर्वर" नहीं।

इसके अलावा मैं "नहीं कर सकता" (वह नहीं देखभाल इस बारे में लेना चाहिए ...) का उपयोग करने के लिए कहें "-" टैग के शब्द अलग करने के चरित्र: "एसक्यूएल सर्वर"

किसी ने मदद?

+1

लेकिन फिर मैं एसक्यूएल और सर्वर के साथ कुछ कैसे टैग करूंगा? (और "सर्वर एसक्यूएल" नहीं कहें;)) – Aistina

+0

आपको "एसक्यूएल, सर्वर" अल्पविराम को अलग करना चाहिए ... –

+0

ठीक है, आप * दोनों * अल्पविराम से अलग * और * स्थान अलग नहीं हो सकते हैं। आपको या तो एक या दूसरे को चुनना होगा। दोनों के अपने फायदे और नुकसान हैं। जैसा कि @bebop ने बताया, जब तक आप एक ऑटो-पूर्ण कार्यक्षमता प्रदान करते हैं, मुझे नहीं लगता कि यह बहुत मायने रखता है। – Aistina

उत्तर

5

या तो आप मौजूदा टैग के लिए स्ट्रिंग से मेल खाते हैं, तो आपके पास रिक्त स्थान के साथ टैग हो सकते हैं (मान लें कि आप पहले बड़े टैग की खोज कर रहे हैं ताकि आपको 'एसक्यूएल' खोजने से पहले 'एसक्यूएल सर्वर' मिल जाए। आप इसे और अधिक बना सकते हैं। केवल मौजूदा टैग का उपयोग करने की अनुमति देकर, और नए टैग बनाने के लिए एक अलग तंत्र है। इस तरह उपयोगकर्ता आसानी से रिक्त स्थान के साथ टैग बना सकते हैं, क्योंकि नए टैग बॉक्स में दर्ज कुछ भी 'एसक्यूएल सर्वर 2005' जैसा एक टैग होगा।

संपादित करें:

वैकल्पिक रूप से आप नए लोगों को बनाने के लिए टैग में कुछ विशेष वाक्यविन्यास हो सकता है:

'एसक्यूएल, asp.net, [NEWTAG] एसक्यूएल सर्वर, सी #' मौजूदा टैग 'एसक्यूएल', 'asp.net', 'ग #' का प्रयोग करेंगे और एक नया टैग 'एसक्यूएल सर्वर'

बन जाएगा/संपादित करें

या आप रिक्त स्थान पर विभाजित है और अनुमति नहीं देते रिक्त स्थान के साथ टैग

अपने उदाहरण में

कैसे आप 'एसक्यूएल सर्वर' (1 टैग) और 'एसक्यूएल' 'सर्वर' के बीच अंतर कैसे बताते हैं (2 टैग)?

यदि आप SO को देखते हैं तो टैग सभी स्थान अलग होते हैं, इसलिए एक टैग एसक्यूएल-सर्वर होता है।

जब तक आप टैग उन्हें सुझाव दिया के रूप में वे उन्हें प्रवेश कर रहे हैं मुझे नहीं लगता कि यह एक समस्या

+0

मेरे पहले उदाहरण में, मैं अल्पविराम के साथ टैग अलग करता हूं, इसलिए मैं उस अंतर को बता सकता हूं। –

+0

लेकिन आपने खुद कहा, यह एक अच्छा समाधान नहीं है। अन्यथा आप कैसे बता सकते हैं कि कोई उपयोगकर्ता 'asp.net C# sql सर्वर' सबमिट करता है कि यह एक टैग नहीं है? –

+0

हाँ, यह मेरी समस्या है ... –

6

StackOverflow उपयोगकर्ताओं को गलत तरीके से, टैग में प्रवेश उदाहरण के लिए यदि आप था के साथ वास्तव में एक ही समस्या है होगा 'स्ट्रिंग-मैनिपुलेशन' के बजाय 'स्ट्रिंग मैनिपुलेशन' दर्ज किया गया। आपने टैग सेपरेटर को अंतरिक्ष से अल्पविराम में बदल दिया है।

बुनियादी समस्या अभी भी वही है, इसलिए यह कोई आश्चर्य की बात यह है कि समाधान भी एक ही है:

  1. अपनी साइट पर सुविधाजनक मदद के माध्यम से अपने उपयोगकर्ताओं को शिक्षित करना।
  2. मॉडरेटर जो अन्य उपयोगकर्ताओं की गलतियों को हल करने में मदद करते हैं, साइट की सफाई करते हैं।
  3. मॉडरेटर आपके उपयोगकर्ताओं को भी गलतियां करते समय शिक्षित करते हैं ताकि वे भविष्य में एक ही गलती न करें।

स्टैक ओवरव्लो साबित करता है कि यह मॉडल अच्छी तरह से काम कर सकता है।उपयोगकर्ता त्रुटियों को ठीक करने के लिए एक स्वचालित समाधान कभी-कभी त्रुटियों को स्वयं बना देता है क्योंकि आपने अस्पष्टता को स्वयं बताया है। यह उन लोगों को निराश करेगा जो इसे सही ढंग से कर रहे हैं केवल सॉफ़्टवेयर द्वारा उनके टैग को "फिक्सिंग" करने के लिए।

2

आप एक सांख्यिकीय spelling correction प्रकार का दृष्टिकोण आज़मा सकते हैं: यदि पहले से ही "एसक्यूएल सर्वर" टैग की गई चीज़ों का एक गुच्छा है तो यह एक शिक्षित अनुमान लगा सकता है। बेशक, यह कभी-कभी गलत हो जाएगा।

9

एक (आसान) तरीका है जिसे मैं आपके उपयोगकर्ता को किसी टैग में किसी भी चरित्र को शामिल करने की अनुमति देने के बारे में सोच सकता हूं। यह समाधान उपयोगकर्ता को एक समय में केवल एक टैग दर्ज करने की अनुमति देना है। आपके पास एक टेक्स्टबॉक्स हो सकता है जहां उपयोगकर्ता टैग में प्रवेश करता है (मौजूदा टैग के लिए स्वत: पूर्णता एक निश्चित प्लस है), प्रविष्टियां समाप्त होने पर एंटर या बटन दबाएं, और दर्ज टैग टेक्स्ट टैग के नीचे लागू टैग की सूची में दिखाई देते हैं। उपयोगकर्ता को टैग को हटाने की अनुमति देने के लिए उन लागू टैगों में प्रत्येक टैग के लिए एक बटन होना चाहिए।

वर्डप्रेस में पोस्ट बनाने के दौरान एक समान टैगिंग तंत्र है, लेकिन वे टैग को सीमित करने वाले चरित्र को बस बताकर एक साथ कई टैग्स दर्ज करने की अनुमति देते हैं। एक डिलीमीटर के लिए पूछना एक बड़ा सौदा नहीं है, लेकिन यदि आप किसी विशेष डिलीमीटर को जनादेश नहीं देना चाहते हैं, तो आपको एक समय में उपयोगकर्ता को एक ही टैग दर्ज करने के लिए प्रतिबंधित करना होगा।

image of wordpress's tag box

एक और आइडिया (संपादित करें)

मैं सिर्फ यह आज पढ़ें: Tokenizing Control

0

मेरी सलाह:

पहले, सामने, अभी चुनें: आप ऐसा करेंगे रिक्त स्थान वाले टैग को उनके नामों में अनुमति देना चाहते हैं या नहीं? एक या दूसरे को चुनें, उपयोगकर्ता के बारे में एक चीज़ या दूसरी बात के बारे में ह्युरिस्टिक भविष्यवाणी के साथ कुछ पागल मिश-मैश बनाने की कोशिश न करें।

या तो यह:

sql server 

हमेशा 1 टैग का मतलब है, या हमेशा 2. बस अभी आप क्या चाहते हैं चुनें मतलब है। एक या दूसरा। आप टैग में रिक्त स्थान (इसका मतलब है कि यह 2 टैग है) की अनुमति नहीं करने के लिए चुनना चाहिए, लेकिन आप यह भी अलग करने के लिए उन टैग को अल्पविरामों से, जैसे अनुमति देना चाहते हैं:

sql,server 

तो फिर तुम उपयोगकर्ता के साथ एक गुच्छा में प्रवेश निपट सकते हैं मिश्रित टैग की, जैसे:

sql server,regular expressions,java c# 
कोड के साथ इस तरह

:

string[] tags = Regex.Split(input, @"(,|\s)+"); 

जो तुम मिल जाएगा:

tags[0]: sql 
tags[1]: server 
tags[2]: regular 
tags[3]: expressions 
tags[4]: java 
tags[5]: c# 
संबंधित मुद्दे