2008-12-07 11 views

उत्तर

34

आपको contrib dir में SpellChecker मॉड्यूल देखना चाहिए। यह जावा ल्यूसीन के SpellChecker मॉड्यूल का एक बंदरगाह है, इसलिए इसकी documentation सहायक होनी चाहिए।

(javadocs से :)

उदाहरण उपयोग:

import org.apache.lucene.search.spell.SpellChecker; 

    SpellChecker spellchecker = new SpellChecker(spellIndexDirectory); 
    // To index a field of a user index: 
    spellchecker.indexDictionary(new LuceneDictionary(my_lucene_reader, a_field)); 
    // To index a file containing words: 
    spellchecker.indexDictionary(new PlainTextDictionary(new File("myfile.txt"))); 
    String[] suggestions = spellchecker.suggestSimilar("misspelt", 5); 
+1

यह सही जवाब है, स्वीकार किया जाना चाहिए! बस मैं जो खोज रहा था;) –

+2

स्पेल चेकर मॉड्यूल स्थानांतरित हो गया: https://svn.apache.org/repos/asf/lucene/lucene.net/trunk/C%23/contrib/SpellChecker.Net/ – Domenic

6

AFAIK Lucene निकटता-खोज का समर्थन करता है, जिसका अर्थ है कि यदि आप की तरह कुछ का उपयोग करें:

क्षेत्र: stirng ~ 0,5

(यह एक टिल्ड हस्ताक्षर s)

"स्ट्रिंग" से मेल खाएगी। फ्लोट यह है कि खोज कैसे "सहिष्णु" होगी, जहां 1.0 सटीक मिलान है और 0.0 सबकुछ मेल खाता है (प्रकार)।

विभिन्न पार्सर्स हालांकि इसे अलग-अलग कार्यान्वित करेंगे।

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

प्रदर्शन कारणों से, बहुत आम गलत वर्तनी के लिए इस तरह के लुकअप को कैश करने के लिए उपयोगी हो सकता है।

1

Google का "क्या आपका मतलब था?" है (संभवतः; वे गोपनीय हैं, ज़ाहिर है) उनके प्रश्न लॉग से परामर्श करके लागू किया गया है। यह देखने के लिए देखें कि क्या आपके द्वारा प्रसंस्करण की गई क्वेरी की खोज करने वाले लोग जल्द ही कुछ इसी तरह के लिए खोजे गए हैं; यदि ऐसा है, तो यह इंगित करता है कि उन्होंने गलती की है, और महसूस किया कि उन्हें क्या खोजना चाहिए।

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

+0

यहां "क्या आपका मतलब है" का एक सरल स्पष्टीकरण है http://norvig.com/spell-correct.html, यह एक बहुत ही रोचक पढ़ा गया है। –

0

गूगल कोड semanticvectors बुलाया परियोजना पर एक नजर डालें। कार्यक्षमता करने के लिए लुसीन मेलिंग सूचियों पर एक अच्छी तरह से चर्चा की जा रही है जैसे कि आप इसका उपयोग करने के बाद क्या कर रहे हैं - हालांकि यह जावा में लिखा गया है।

आपको इस तरह की सुविधा बनाने के लिए शायद अपने खोज लॉग पर कुछ मशीन लर्निंग एल्गोरिदम का विश्लेषण करना होगा और उपयोग करना होगा!

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