2012-03-27 15 views
14

मैं "jahngir" ~ 0.2 के लिए एक अस्पष्ट खोज करने की कोशिश कर रहा हूं, जो कोई परिणाम नहीं देता है। मेरे इंडेक्स में डेटा "जहानगीर रहमान एमडी" के साथ रिकॉर्ड है। यदि मैं सटीक शब्द "जहांगीर" ~ 0.2 के साथ खोज करने की कोशिश करता हूं, तो यह काम करता है। क्या कोई मेरी मदद कर सकता है, जो मैं गलत कर रहा हूं। मैंने सोलर फ़ज़ी खोज कैसे काम करता है इस बारे में जानने का प्रयास करने में काफी समय लगाया है। सोलर फ़ज़ी खोज की व्याख्या करने वाले कोई भी लिंक उपयोगी होंगे। नीचे टेक्स्ट फ़ील्ड है जिसे मैं अनुक्रमण के लिए उपयोग कर रहा हूं। अग्रिम में धन्यवाद।सोलर फ़ज़ी समान शब्दों के लिए खोजें

<fieldType name="text" class="solr.TextField" positionIncrementGap="100" autoGeneratePhraseQueries="true"> 
    <analyzer type="index"> 
    <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
    <!-- in this example, we will only use synonyms at query time 
    <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/> 
    --> 
    <!-- Case insensitive stop word removal. 
     add enablePositionIncrements=true in both the index and query 
     analyzers to leave a 'gap' for more accurate phrase queries. 
    --> 
    <filter class="solr.StopFilterFactory" 
      ignoreCase="true" 
      words="stopwords.txt" 
      enablePositionIncrements="true" 
      /> 
    <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/> 
    <filter class="solr.LowerCaseFilterFactory"/> 
    <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/> 
    <filter class="solr.PorterStemFilterFactory"/> 
    <filter class="solr.CommonGramsFilterFactory" words="stopwords.txt" ignoreCase="true"/> 
    <filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="15" side="front"/> 
    <filter class="solr.PhoneticFilterFactory" encoder="DoubleMetaphone" inject="false"/> 
    </analyzer> 
    <analyzer type="query"> 
    <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
    <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/> 
    <filter class="solr.StopFilterFactory" 
      ignoreCase="true" 
      words="stopwords.txt" 
      enablePositionIncrements="true" 
      /> 
    <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/> 
    <filter class="solr.LowerCaseFilterFactory"/> 
    <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/> 
    <filter class="solr.PorterStemFilterFactory"/> 
    <filter class="solr.CommonGramsFilterFactory" words="stopwords.txt" ignoreCase="true"/> 
    <filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="15" side="front"/> 
    <filter class="solr.PhoneticFilterFactory" encoder="DoubleMetaphone" inject="false"/> 
    </analyzer> 
</fieldType> 

यहाँ विन्यास कि प्रतिक्रिया के बाद मेरे लिए काम किया है। धन्यवाद!

<!-- Modified to fit fuzzy queries --> 
    <fieldType name="text_exact_fuzzy" class="solr.TextField" omitNorms="false"> 
     <analyzer type="index"> 
      <tokenizer class="solr.StandardTokenizerFactory"/> 
      <filter class="solr.StandardFilterFactory"/> 
      <filter class="solr.LowerCaseFilterFactory"/> 
     </analyzer> 
     <analyzer type="query"> 
     <tokenizer class="solr.StandardTokenizerFactory"/> 
     <filter class="solr.StandardFilterFactory"/> 
     <filter class="solr.LowerCaseFilterFactory"/> 
     </analyzer> 
    </fieldType> 
+0

आप जिस लुकअप कार्यान्वयन का उपयोग कर रहे हैं उसका क्या उपयोग है? एफएसटी, डब्लूएफएसटी या जैस्पेल? – Chiron

+0

और आप Solr के अनुरोध को कैसे भेज रहे हैं? आपने एक या आप 'select' endpoint 'के माध्यम से भेज रहे हैं? – Chiron

+0

चिरॉन - अनुरोध चयनित एंडपॉइंट का उपयोग करके भेजा जाता है। – Ravi

उत्तर

18

नहीं, आपको स्टेमिंग सक्षम करने की आवश्यकता नहीं है, और एक स्टेमर का उपयोग समस्या पैदा कर सकता है।

आपके पास टेक्स्ट फ़ील्ड पर बहुत अधिक फ़िल्टर हैं। आप एक शब्द को एक पोर्टर स्टेम में परिवर्तित कर रहे हैं, जो अक्सर वास्तविक शब्द नहीं होता है, फिर उस की ध्वन्यात्मक कुंजी लेता है। सतह शब्द शायद ही कभी इंडेक्स में संग्रहीत फोनेटिक कुंजी से मेल खाता है। ध्वन्यात्मक कुंजी मूल शब्द से बहुत अलग होगी।

व्यवस्थापक UI में विश्लेषक पृष्ठ का उपयोग यह देखने के लिए करें कि नियम कैसे संसाधित किए जाते हैं।

मैं विभिन्न क्षेत्रों में अनुमानित मिलान के प्रकार को विभाजित करने की अनुशंसा करता हूं।

  • text_exact:, छोटे और डबल मेटाफोन,

text_exact साथ उपयोग फजी मिलान स्टेम नहीं है, क्योंकि यह टाइपिंग संभालता है: लोअरकेस और स्टेम

  • text_phonetic: लोअरकेस, कि इसके बारे में
  • text_stem है त्रुटियों। अन्य क्षेत्रों के खिलाफ अस्पष्टता का प्रयोग न करें।

    आप इन क्षेत्रों को अलग-अलग वजन दे सकते हैं, सटीक मिलान बाकी की तुलना में उच्च गुणवत्ता वाले मैच है, इसलिए इसका वजन अधिक हो सकता है। स्टेमड मैच फोनेटिक की तुलना में एक बेहतर मैच है, इसलिए इसे सटीक से छोटा वजन होना चाहिए, लेकिन फोनेटिक से बड़ा होना चाहिए।

  • +0

    बहुत बहुत धन्यवाद! आपने बिल्कुल सही किया है। मैं यह समझने की कोशिश कर रहा हूं कि कैसे अस्पष्ट खोज और समानता कारक सोलर के साथ काम करता है।इसे विभिन्न फ़ील्ड प्रकारों में विभाजित करने की आपकी सिफारिश, और फ़ज़ी खोज के लिए text_exact मिलान का उपयोग करके, यह कैसे काम करता है इसके बारे में अधिक समझने में मदद मिली! – Ravi

    +0

    रवि, क्या आप अपनी अंतिम कॉन्फ़िगरेशन साझा कर सकते हैं? – Mateusz

    +1

    यहां मेरा अंतिम कॉन्फ़िगरेशन है। <विश्लेषक प्रकार = "अनुक्रमणिका"> <टोकनज़र वर्ग = "solr.StandardTokenizerFactory" /> <फ़िल्टर वर्ग = "solr.StandardFilterFactory "/> <फिल्टर वर्ग =" solr.LowerCaseFilterFactory "/> \t \t <विश्लेषक प्रकार =" क्वेरी "> <फिल्टर वर्ग =" solr.StandardFilterFactory " /> <फ़िल्टर वर्ग = "solr.LowerCaseFilterFactory" /> \t \t Ravi

    0

    काम करने के लिए फजी खोजों पाने के लिए, आप अपनी इच्छित भाषा के लिए सही स्टेमिंग और/या फ़िल्टर फैक्टरी सक्षम करने के लिए की आवश्यकता होगी। अधिक जानकारी के लिए कृपया Solr Wiki पर Langauge Analysis विषय देखें।

    संपादित करें: कृपया अपने डेटा को अनुक्रमणित करने के विभिन्न तरीकों के बारे में अधिक जानकारी के लिए Analyzers, Tokenizers and Token Filters देखें और यह आपके डेटा की खोज को कैसे प्रभावित करता है।

    +0

    प्रतिक्रिया के लिए धन्यवाद। यह जानना अच्छा है कि स्टेमिंग फ़िल्टर फैक्ट्री अस्पष्ट खोजों को प्रभावित करती है। उपर्युक्त क्षेत्र में मैं पहले से ही पोर्टरस्टेमफिल्टर फैक्ट्री का उपयोग कर रहा हूं। क्या मुझे इसे किसी और चीज़ में बदलना चाहिए? अन्य कारक क्या हैं जो एक अस्पष्ट खोज को प्रभावित कर सकते हैं। – Ravi

    +0

    कृपया अधिक जानकारी के लिए मेरे उत्तर में अपडेट देखें। –

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