2012-02-29 10 views
7

मैं अपने ऐप्स के लिए Solr का उपयोग किया था और मैं एकीकृत वर्तनी जाँच घटक, लेकिन मैं कुछ समस्याएं हैं:Solr आप मतलब (वर्तनी जांच घटक)

पहले: जब मैं एक शब्द अंतरिक्ष से अलग कर दिया टाइप वे मेरे सुधार दे "वाट मंत्रियों" =>Watters

दूसरा है "क्या शब्द" लेकिन सच: जब मैं तो टाइप करें प्रत्येक शब्द

उदाहरण के लिए मुझे कुछ गलत शब्द के साथ वाक्यांश। हालांकि अन्य शर्तें सही हैं, वे सभी शर्तों के लिए वर्तनी लागू करते हैं।

उदाहरण के लिए: "Difreencesमें lankuage उपयोग सम्मेलनों" => "भाषा के प्रयोग रूपांतरण में अंतर"।

सच है

"भाषा के प्रयोग सम्मेलनों में अंतर" यह solrconfig.xml में मेरे config है:

<searchComponent name="spellcheck" class="solr.SpellCheckComponent"> 
      <str name="queryAnalyzerFieldType">textSpell</str> 
      <lst name="spellchecker"> 
       <str name="name">default</str> 
       <str name="field">spell</str> 
       <str name="spellcheckIndexDir">spellchecker</str> 
      </lst> 
</searchComponent> 

<requestHandler name="/spell" class="solr.SearchHandler" startup="lazy"> 
      <lst name="defaults"> 
       <str name="spellcheck.onlyMorePopular">true</str> 
       <str name="spellcheck.extendedResults">false</str> 
       <str name="spellcheck.count">1</str> 
      </lst> 
      <arr name="last-components"> 
       <str>spellcheck</str> 
      </arr> 
</requestHandler> 

Schema.xml:

फील्ड के प्रकार:

<fieldType name="text" class="solr.TextField" positionIncrementGap="100"> 
      <analyzer type="index"> 
       <tokenizer class="solr.StandardTokenizerFactory"/> 
       <filter class="solr.LowerCaseFilterFactory"/> 
       <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="1" splitOnCaseChange="1"/> 
       <filter class="solr.ASCIIFoldingFilterFactory" /> 
       <filter class="solr.SnowballPorterFilterFactory" language="English"/> 
       <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/> 
      </analyzer> 
      <analyzer type="query"> 
       <tokenizer class="solr.StandardTokenizerFactory"/> 
       <filter class="solr.LowerCaseFilterFactory"/> 
       <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="0"/> 
       <filter class="solr.ASCIIFoldingFilterFactory" /> 
       <filter class="solr.SnowballPorterFilterFactory" language="English"/> 
       <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/> 
      </analyzer> 
      <analyzer type="multiterm" > 
       <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
       <filter class="solr.ASCIIFoldingFilterFactory" /> 
      </analyzer> 
     </fieldType> 


    <fieldType name="textSpell" class="solr.TextField" positionIncrementGap="100" omitNorms="true"> 
       <analyzer type="index"> 
        <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
        <filter class="solr.LowerCaseFilterFactory"/> 
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/> 
        <filter class="solr.StandardFilterFactory"/> 
        <filter class="solr.RemoveDuplicatesTokenFilterFactory"/> 
       </analyzer> 
       <analyzer type="query"> 
        <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/> 
        <filter class="solr.LowerCaseFilterFactory"/> 
        <!--<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>--> 
        <filter class="solr.StandardFilterFactory"/> 
        <filter class="solr.RemoveDuplicatesTokenFilterFactory"/> 
       </analyzer> 
      </fieldType> 

फील्ड्स:

<field name="title" type="text" indexed="true" stored="true" termVectors="true"/> 
<field name="spell" type="textSpell" indexed="true" stored="true" multiValued="true"/> 

कॉपी फील्ड्स

<copyField source="title" dest="spell"/> 

मैं तुम्हें WordBreakSpellChecker

अपने दूसरे के लिए के रूप में इस्तेमाल कर सकते हैं आपकी पहली समस्या के लिए आपकी मदद की सराहना करेंगे

चीयर्स

+0

अच्छा सवाल ... क्या आपके पास कोई ट्यूटोरियल है जिसका उपयोग आप लुसीन के बारे में अधिक जानने के लिए करते थे ... अन्य तो सौर पृष्ठ से आधिकारिक दस्तावेज? Ty –

+0

@Sebastian: ** बेसिक ट्यूटोरियल: ** [5 मिनट में Solr] (http://www.solrtutorial.com/solr-in-5-minutes.html), [अपाचे Lucene त्वरित-प्रारंभ गाइड] (http://www.ibm.com/developerworks/opensource/tutorials/os-apachelucene/)। ** उन्नत ट्यूटोरियल: ** [डीज़ोन सोलर ट्यूटोरियल] (http://www.dzone.com/links/search.html?query=solr+lucene&x=-1335&y=-4)। ** उदाहरण: ** [ड्रूपल के लिए सोलर ड्रूपल] (https://drupal.org/project/apachesolr), [वर्डप्रेस के लिए अपाचे सोलर] (http://wordpress.org/plugins/solr- फॉर-वर्डप्रेस /), [सोलर पीएचपी मैनुअल] (http://php.net/manual/fr/book.solr.php)। शुभकामनाएं, मुझे उम्मीद है कि यह मदद करता है;) – ZendMind

+0

** पुस्तकें: ** [लुसीन और सोलर: परिभाषा गाइड] (http://www.amazon.com/Lucene-Solr-Definitive-comprehensive-realtime/dp/1449359957/रेफरी = sr_1_3? एस = किताबें और यानी = यूटीएफ 8 और क्यूआईडी = 1378896499 और एसआर = 1-3 और कीवर्ड = सोलर), [अपाचे सोलर 4 कुकबुक] (http://www.amazon.com/Apache-Solr-Cookbook- राफल- कुक/डी पी/1782161325/रेफरी = sr_1_1? एस = पुस्तकें और यानी = UTF8 और QID = १३७८८९६४९९ और एसआर = 1-1 और कीवर्ड = Solr)। – ZendMind

उत्तर

1

समस्या आपसेट कर सकते हैंसे <str name="spellcheck.onlyMorePopular">false</str> और देखें कि क्या इसका अपेक्षित परिणाम है।

+0

हाय क्लेन, आपकी प्रतिक्रिया के लिए thnk, php के साथ बातचीत करने के लिए appach-solr3.5 का उपयोग कर रहा हूँ। क्या आप मुझे बता सकते हैं कि मैं इस पैच का उपयोग कैसे कर सकता हूं? चीयर्स – ZendMind

+0

क्या WordBreakSpellChecker appach-solr3.5 में मानक है? – ZendMind

+0

यह मानक नहीं है। आपको इसे स्रोत पर लागू करने और नए जार/युद्ध का निर्माण करने की आवश्यकता है। –

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