में है मुझे लगता है कि आप तकनीक का एक संयोजन लागू करना चाहिए।
1) सामान्य वर्तनी प्रकारों के लिए मैं एक शब्दकोश-आधारित विधि के साथ जाऊंगा। चूंकि वे आम हैं, इसलिए मैं गैर-शब्दकोष शब्दों को खोने के बारे में चिंता नहीं करता। वह रंग/रंग की समस्या को हल करना चाहिए।
2) टाइपो और अन्य गैर-मानक वर्तनी प्रकारों के लिए आप टोकन को उनके अंग्रेजी उच्चारण के प्रतिनिधित्व में बदलने के लिए मेटाफोन (http://en.wikipedia.org/wiki/Metaphone) एल्गोरिदम लागू कर सकते हैं। इसी तरह के संस्करण समान ध्वनि होते हैं, इस प्रकार आप उन्हें एक-दूसरे से मिल सकते हैं (उदाहरण के लिए, जॉन से जॉन)। आप क्वेरी के दौरान संपादन-दूरी-आधारित मिलान एल्गोरिदम का भी उपयोग कर सकते हैं ताकि बहुत ही समान टोकन से मिलान किया जा सके, केवल वर्णों की एक जोड़ी जुड़ा हुआ हो या एक वर्ण-गिरावट (उदा। हुसैन बनाम हाउसिन)।
3) बीच में हेफ़ेन के साथ एस्ट्रोफ़े और यौगिक शब्दों के लिए, आप दोनों प्रकारों को स्टोर कर सकते हैं। उदाहरण के लिए, "जॉन्स" को "जॉन एस" और "जॉन्स" दोनों के रूप में अनुक्रमित किया जाएगा। "रिक्त स्थान" को "रिक्त स्थान" और "रिक्त स्थान" के साथ परिवर्तित किया जा सकता है (या साथ में संग्रहीत)।
4) के बीच, आप इस तरह Solr के HyphenationCompoundWordTokenFilterFactory वर्ग के रूप में एक बाहरी पुस्तकालय इस्तेमाल कर सकते हैं किसी भी हाइफन बिना यौगिक शब्दों के लिए (http://lucene.apache.org/solr/api/org/apache/solr/analysis/ HyphenationCompoundWordTokenFilterFactory.html)। हालांकि यह एक शब्दकोश का उपयोग कर सकते हैं, यह करने की ज़रूरत नहीं है। यह उन यौगिक शब्दों से निपटने के लिए लक्षित है जिन्हें अक्सर जर्मन और इसी तरह की भाषाओं में सामना किया जाता है। मुझे कोई कारण नहीं दिख रहा है कि आप इसे अंग्रेजी में क्यों लागू नहीं कर सकते हैं (आपको एक अंग्रेजी शब्दकोश और हाइफेनेशन नियम फाइलों की आपूर्ति करने की आवश्यकता होगी)।
वास्तव में, अंतिम बिंदु एक महत्वपूर्ण सवाल उठाता है। मुझे नहीं लगता कि आप खरोंच से अपनी खुद की खोज पुस्तकालय बनाने के लिए तैयार हैं। यदि यह सच है तो आप जावा-आधारित सर्च लाइब्रेरी में ल्यूसीन (या सोलर, जो ल्यूसीन पर आधारित है) का उपयोग क्यों नहीं करते हैं, जिनके पास पहले से ही इन समस्याओं से निपटने के तरीके और तरीके हैं? उदाहरण के लिए, इंजेक्शन तकनीक आपको दस्तावेज़ में एक ही स्थान पर रंग और रंग दोनों को इंडेक्स करने की अनुमति देती है; इस प्रकार इससे कोई फर्क नहीं पड़ता कि आप "रंगीन कारों" या "रंगीन कारों" की खोज करते हैं (मानते हैं कि आप स्टेमिंग का ख्याल रखते हैं)। ऐसे फ़िल्टर हैं जो फोनेटिक इंडेक्सिंग (http://lucene.apache.org/solr/api/org/apache/solr/analysis/PhoneticFilterFactory.html) करते हैं। यहां तक कि एक FuzzyQuery घटक भी है जो आपको समान शर्तों से मेल खाने के लिए संपादन दूरी की एक निश्चित मात्रा की अनुमति देता है (http://lucene.apache.org/core/old_versioned_docs/versions/3_2_0/api/all/org/apache/lucene/ खोज/FuzzyQuery.html)
आपको यह तय करने की भी आवश्यकता होगी कि आप किस बिंदु पर इन समस्याओं से निपटना चाहते हैं: एक चरम दृष्टिकोण इंडेक्सिंग के दौरान इन शर्तों के सभी संभावित रूपों को अनुक्रमणित करना और प्रश्नों का उपयोग करना है।यह आपकी क्वेरी प्रोसेसिंग लाइट रखेगा, लेकिन आपको एक बड़ी इंडेक्स खर्च होगी (क्योंकि उन सभी प्रकारों के कारण जिन्हें आपको स्टोर करने की ज़रूरत है)। दूसरा चरम दस्तावेजों को इंडेक्स करना है क्योंकि वे खोज के दौरान प्रश्नों का विस्तार करते हैं और विस्तार करते हैं। इससे आपको भारी क्वेरी प्रोसेसिंग की लागत पर आपकी इंडेक्स दुबला रखने की अनुमति मिल जाएगी। फोनेटिक इंडेक्सिंग के लिए आपको इंडेक्सिंग और खोज के दौरान प्रश्नों के दौरान अपने दोनों दस्तावेज़ों को संसाधित करने की आवश्यकता होगी। फ़ज़ी मिलान केवल खोज समय के दौरान व्यवहार्य होगा क्योंकि, संभवतः, आप इंडेक्स में सभी शर्तों के सभी संपादन प्रकारों को स्टोर नहीं कर पाएंगे।
स्रोत
2012-02-18 23:51:35
क्या यह एक खोज इंजन नहीं है? क्या आप अपाचे सोलर को इंस्टॉल नहीं कर सकते हैं और फिर इसे टीबीएनआईएस कार्य करने के लिए अपनी फाइलों पर चला सकते हैं? या किसी को याद किया था? – PurplePilot
@PurplePilot: मुझे मैन्युअल रूप से प्रसंस्करण करने की आवश्यकता है, इसलिए आप एक एपीआई, या संबंधित एल्गोरिदम का सुझाव दे सकते हैं। – phoxis
आप यह कोशिश कर सकते हैं http://tipsandtricks.runicsoft.com/Other/JavaStemmer.html – PurplePilot