2012-03-29 18 views
5

द्वारा खोज परिणामों को समूह करने का सबसे प्रभावी तरीका मैं एक एसक्यूएल सर्वर 2008 डीबी और एएसपीएनटी एमवीसी वेब ई-कॉमर्स ऐप पर काम कर रहा हूं।स्ट्रिंग समानता

मेरे पास अलग-अलग उपयोगकर्ता डीबी को अपने उत्पादों को खिला रहे हैं, और मैं समान नाम वाले उत्पादों की कीमतों की तुलना करना चाहता हूं। मुझे पता है कि स्ट्रिंग मिलान डोमेन विशिष्ट है, लेकिन मुझे अभी भी सर्वोत्तम सामान्य समाधान की आवश्यकता है।

खोज परिणामों को समूहित करने का सबसे प्रभावी तरीका क्या है? क्या मुझे लेवेनशियन दूरी एल्गोरिदम का उपयोग करके रिकॉर्ड्स से प्रत्येक रिकॉर्ड की तुलना करनी चाहिए? क्या मुझे इसे डीबी में या कोड में करना चाहिए? क्या इस कार्य के लिए वास्तविक समय में एसएसआईएस फ़ज़ी ग्रुपिंग को लागू करने का कोई तरीका है? क्या एसक्यूएल सर्वर 2008 मुफ्त टेक्स्ट खोज का उपयोग कर ऐसा करने का कोई प्रभावी तरीका है?

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

आपको क्या लगता है?

enter image description here

+0

मैं इसे डीबी में करूँगा, यह धागा देखें: http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=66781 और यह: http://stackoverflow.com/questions/560709/levenshtein Levenshtein दूरी alg पर -डिस्टेंस-इन-टी-एसक्यूएल। – Magnus

+0

यह कठिन है - आप उत्पादों 'बिल्ली', 'कार', 'बार', 'बैग', 'बोग', 'कुत्ते' को कैसे समूहित करेंगे? प्रत्येक एक दूसरे से दूरी 1 है, लेकिन 'बिल्ली' और 'कुत्ते' कोई समानता साझा नहीं करते हैं। –

+0

तो विकल्प क्या है? शायद किसी तरह का अर्थपूर्ण शब्दकोश? कोई अन्य विचार? – Gidon

उत्तर

0

यदि आप एक उपयुक्त थिसॉरस/ऑटोलॉजी की रोकथाम कर सकते हैं जो मूल रूप से सर्वोत्तम क्लस्टरिंग संभव प्रदान करता है - चूंकि शब्दों को अवधारणा के पेड़ में छोड़ दिया जाता है, तो पेड़ में दूरी अर्थपूर्ण अर्थ में शब्दों के बीच की दूरी होती है। इस प्रकार बिल्ली और कुत्ते लगभग टैब्बी और कैलिको (बिल्ली) के करीब नहीं होते हैं, लेकिन वे बिल्ली और केला से काफी करीब हैं, जो स्वयं बिल्ली (एन।) और कूद (वी।) से करीब हैं।

छोटी वर्तनी त्रुटियों के लिए अनुमति देना (शब्दों के लिए थिसॉरस में समान वर्तनी वाले शब्दों की तलाश करके) मजबूतता बढ़ा सकता है, लेकिन यह समानार्थी शब्द के परिणामस्वरूप अप्रत्याशित परिणाम भी बना सकता है।

डेटाबेस या कोड में ऐसा करने के लिए, इसे कोड में करें। जिस सीमा तक आप कैश कर सकते हैं, वह तेज़ होगा।

0

यह एक क्लस्टरिंग समस्या है और इसलिए computationally कठिन है, लेकिन इस तरह की समस्याओं को हल करने, दोनों बिल्कुल और लगभग के लिए जाना जाता एल्गोरिदम की एक बड़ी संख्या है। Cluster Analysis और this answer पर विकिपीडिया पृष्ठ पर एक लॉक लें।

एक बार आपके पास क्लस्टरिंग एल्गोरिदम लागू हो जाने के बाद आप क्लस्टर को डीबी में स्टोर कर सकते हैं, लेकिन मुझे संदेह है कि क्लस्टर को प्रत्येक आइटम पर दोबारा गणना करने के लिए बहुत महंगा होगा। एक घंटे में या दिन में एक बार क्लस्टरिंग एल्गोरिदम चलाने के लिए शायद सबसे अच्छा होगा।

संबंधित मुद्दे