2011-03-12 8 views
6

मैं सोलर इंडेक्स में जोड़ता हूं: "अमेरिकन"। जब मैं "अमेरिका" द्वारा खोज करता हूं तो कोई परिणाम नहीं होता है।Solr में stemming कैसे कॉन्फ़िगर करें?

परिणाम प्राप्त करने के लिए schema.xml को कॉन्फ़िगर कैसे किया जाना चाहिए?

वर्तमान विन्यास:

<fieldType name="text" class="solr.TextField" positionIncrementGap="100"> 
      <analyzer type="index"> 
       <tokenizer class="solr.WhitespaceTokenizerFactory" /> 
       <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true" /> 
       <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" /> 
       <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" /> 
       <filter class="solr.LowerCaseFilterFactory" /> 
       <filter class="solr.EnglishPorterFilterFactory" protected="protwords.txt" /> 
       <filter class="solr.RemoveDuplicatesTokenFilterFactory" /> 
       <filter class="solr.PorterStemFilterFactory"/> 
      </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" /> 
       <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" /> 
       <filter class="solr.LowerCaseFilterFactory" /> 
       <filter class="solr.EnglishPorterFilterFactory" protected="protwords.txt" /> 
       <filter class="solr.RemoveDuplicatesTokenFilterFactory" /> 
       <filter class="solr.PorterStemFilterFactory"/> 
      </analyzer> 
     </fieldType> 

उत्तर

4

आप दो stemmers क्यों होता है?
अपने विश्लेषक प्रकार के दोनों से EnglishPorterFilterFactory (बहिष्कृत) निकालने का प्रयास करें, सूचकांक के पुनर्निर्माण और उसके बाद अमेरिकी के लिए है कि क्या खोज का प्रयास अमेरिका निकलेगा।

यदि यह काम नहीं करेगा, तो आप जिस चीज को आजमा सकते हैं, वह आपके दोनों स्टेमर फ़िल्टर को हटाने और SnowballPorterFilterFactory को language="English" के साथ जोड़ने के लिए है।

+0

दोनों दृष्टिकोणों का प्रयास किया। जो उसी। – user657009

+0

अनुक्रमणिका: "स्लॉट्स" \t परिणाम हैं जब मैं खोजता हूं: "स्लॉट", "स्लॉट", "स्लॉटिंग"। सूचकांक: "अमेरिकी" \t कोई परिणाम नहीं: "अमेरिकी"। – user657009

+3

सबसे पहले आपको अपना सोलर एडमिन वेब ऐप खोलना है, विश्लेषण पर जाएं और अपना फ़ील्ड टाइप/नाम चुनें (वर्बोज़ आउटपुट फ़ील्ड्स दोनों की जांच करें), क्वेरी फ़ील्ड में इंडेक्स फ़ील्ड और अमेरिका में अमेरिकन टाइप करें। यह आपको यह देखने की अनुमति देगा कि फ़िल्टर द्वारा फ़िल्टर किए जाने पर इसका विश्लेषण कैसे किया जाता है। अधिक विस्तृत विश्लेषण डाउनलोड के लिए [ल्यूक] (http://www.getopt.org/luke/luke-0.9.9/lukeall-0.9.9.jar) यदि आपके पास पहले से नहीं है (यह निष्पादन योग्य जार है)। इसे शुरू करें और लुसीन इंडेक्स लोड करें। यह पता लगाने के लिए इसका उपयोग करें कि आपकी सामग्री कितनी सटीक है और कई अन्य उपयोगी जानकारी ... –

0

आपको analyzer और EnglishPorterFilterFactory के लिए एक स्टेमर का उपयोग करना होगा @Marko पहले से ही उल्लिखित है। तो आपको इसे विश्लेषकों से हटा देना चाहिए।

मैं दोनों सूचकांक और क्वेरी विश्लेषक के लिए SnowballPorterFilterFactory इस्तेमाल किया -

<fieldType name="text_stem"> 
    <analyzer> 
     <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
     <filter class="solr.SnowballPorterFilterFactory"/> 
     <!-- other filters --> 
    </analyzer> 
</fieldType> 

fieldType परिभाषा है सुंदर आत्म व्याख्यात्मक, लेकिन सिर्फ मामले में:

  • Tokenizer solr.WhitespaceTokenizerFactory: इस आपरेशन सफेद जगहों का उपयोग delimiters के रूप में शब्दों में शब्दों को तोड़ देगा।

  • फ़िल्टर solr.SnowballPorterFilterFactory: यह फ़िल्टर प्रत्येक शब्द (टोकन) के लिए एक उत्पन्न एल्गोरिथ्म लागू होगी। ऊपर दिए गए उदाहरण में मैंने स्नोबॉल पोर्टर स्टेमिंग एल्गोरिदम चुना है। सोलर लोकप्रिय स्टेमिंग एल्गोरिदम के कुछ कार्यान्वयन प्रदान करता है।

आप कई अन्य स्टेमिंग एल्गोरिदम ब्राउज़ कर सकते हैं उदा। HunspellStemFilterFactory, KStemFilterFactory भी।

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