2009-11-17 11 views
8

अपाचे सोलर सर्च इंजन अनुमानित स्ट्रिंग मैचों प्रदान करता है, उदा। Levenshtein एल्गोरिदम के माध्यम से?लेवेनशेटिन अनुमानित स्ट्रिंग मिलान का उपयोग करने के लिए एसओएलआर को कॉन्फ़िगर कैसे करें?

मैं अंतिम नाम से ग्राहकों को ढूंढने का एक तरीका ढूंढ रहा हूं। लेकिन मैं नामों की शुद्धता की गारंटी नहीं दे सकता। मैं एसओएलआर को कैसे कॉन्फ़िगर कर सकता हूं ताकि अगर वह "लेवेनस्टीन" खोजे तो भी उसे "लेवेनशेटिन" मिलेगा?

उत्तर

16

आमतौर पर यह SpellCheckComponent के साथ किया जाता है, जो आंतरिक रूप से Lucene SpellChecker डिफ़ॉल्ट रूप से उपयोग करता है, जो लेवेनशेटिन लागू करता है।

wiki वास्तव में बहुत अच्छी तरह से बताता है कि यह कैसे काम करता है, इसे कैसे कॉन्फ़िगर करें और कौन से विकल्प उपलब्ध हैं, यहां कोई दोहराव नहीं है।

या आप केवल Lucene's fuzzy search operator का उपयोग कर सकते हैं।

दूसरा विकल्प लेवेनशेटिन के बजाय phonetic filter का उपयोग कर रहा है।

+0

मॉरीसिओ, क्या आप फ़ज़ी खोज ऑपरेटर और फोनेटिक फ़िल्टर के दो लिंक देख सकते हैं? दोनों टूटा हुआ प्रतीत होता है। धन्यवाद! – reto

3

मॉरीसिओ द्वारा महान उत्तर, मेरा एकमात्र "सस्ता" जोड़ सिर्फ ~ चरित्र को उन सभी शर्तों में जोड़ना है जिन्हें आप हल करने के रास्ते पर फ़ज़ी मैच करना चाहते हैं। यदि आप डिफ़ॉल्ट सेट अप का उपयोग कर रहे हैं, तो यह आपको अस्पष्ट मैच देगा।

+0

@MattMcKnight: मैं सोलर में एक ही दूरी माप करना चाहता हूं लेकिन ** ~ ** मेरा काम नहीं कर रहा है .. मैंने ** क्यू = टर्म का उपयोग करने की कोशिश की: "सेब" ~ 2 ** कोई मदद – iNikkz

+0

@iNikkz अगर आप सेब के चारों ओर उद्धरण डालते हैं, मुझे लगता है कि यह एक वाक्यांश क्वेरी बन जाता है, इसलिए ~ 2 का अर्थ निकट दूरी की बजाय निकटता खोज है। उद्धरण – MattMcKnight

+0

@MattMcKnight छोड़ने का प्रयास करें: मैंने उद्धरण छोड़ने की कोशिश की लेकिन यह बहुत सारे परिणाम देता है क्योंकि मैंने इंडेक्स और क्वेरी दोनों पर फोनेटिक फ़िल्टरिंग का उपयोग किया है। मैंने यहां अपना प्रश्न चिपकाया है - [http://stackoverflow.com/questions/27484326/getting-most-likely- दस्तावेज़-of-the-query-using-phonetic-filter-in-solr]। क्या आप कृपया मेरी मदद करेंगे? – iNikkz

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