2012-09-25 9 views
6

मैं खोज क्षेत्र के लिए स्वत: सुझाव ड्रॉपडाउन बनाने के लिए सोलर का उपयोग करना चाहता हूं लेकिन वाक्यांश के लिए सुझाव प्राप्त करने का प्रयास करते समय मैं अटक गया हूं। जब मैं "कुत्ते टी" की खोज करता हूं, तो मैं एक परिणाम सेट प्राप्त करना चाहता हूं जिसमें "कुत्ते के इलाज", "कुत्ते की चाल", "कुत्ते टैग" जैसे वाक्यांश शामिल हैं ... लेकिन इसके बजाय मुझे 2 परिणाम सेट मिलते हैं, एक "कुत्ते" के लिए "(जैसे कि" टी "(जैसे कि" पेड़ "" समय "...) कुत्तों" "कुत्ता हड्डी" "कुत्ता" और एक अन्य के लिए ...) "वाक्यांश के लिए solr autosuggest परिणाम प्राप्त करें

मेरे क्वेरी यूआरएल है:

http://localhost:8985/solr/mycollection/suggest?q=%22dog%20t%22&wt=json 

और मेरे अनुरोध हैंडलर के रूप में solrconfig में परिभाषित किया गया है ...

<searchComponent class="solr.SpellCheckComponent" name="suggest"> 
    <lst name="spellchecker"> 
     <str name="name">suggest</str> 
     <str name="classname">org.apache.solr.spelling.suggest.Suggester</str> 
     <str name="lookupImpl">org.apache.solr.spelling.suggest.tst.TSTLookup</str> 
     <str name="field">suggest</str> <!-- the indexed field to derive suggestions from --> 
     <float name="threshold">0.0001</float> 
     <str name="buildOnCommit">true</str> 
    </lst> 
<str name="queryAnalyzerFieldType">textSuggest</str> 
    </searchComponent> 

    <requestHandler class="org.apache.solr.handler.component.SearchHandler" name="/suggest"> 
    <lst name="defaults"> 
     <str name="spellcheck">true</str> 
     <str name="spellcheck.dictionary">suggest</str> 
     <str name="spellcheck.onlyMorePopular">true</str> 
     <str name="spellcheck.count">10</str> 
    </lst> 
    <arr name="components"> 
     <str>suggest</str> 
    </arr> 
    </requestHandler> 

"का सुझाव 'की fieldtype

0 के रूप में स्कीमा में परिभाषित किया गया है
<fieldType name="textSuggest" class="solr.TextField" positionIncrementGap="100" > 
     <analyzer type="index"> 
<tokenizer class="solr.KeywordTokenizerFactory"/> 
    <filter class="solr.LowerCaseFilterFactory"/> 
<filter class="solr.ShingleFilterFactory" maxShingleSize="3" outputUnigrams="true" /> 
<filter class="solr.WordDelimiterFilterFactory" 
       generateWordParts="1" 
       generateNumberParts="1" 
       catenateWords="0" 
       catenateNumbers="0" 
       catenateAll="0" 
       preserveOriginal="1" splitOnCaseChange="1" 
       /> 
</analyzer> 
<analyzer type="query"> 
    <tokenizer class="solr.KeywordTokenizerFactory"/> 
    <filter class="solr.LowerCaseFilterFactory"/> 
</analyzer> 
    </fieldType> 

उत्तर

6

मैं अपनी समस्या से 2 समाधान ... पाया

एक यह है कि कई शब्दों में क्ष पैरामीटर को विभाजित नहीं करता है एक कस्टम queryHandler तैयार करना है।

अन्य विकल्प है, जो मैं चुना है, क्यू के बजाय पैरामीटर spellcheck.q उपयोग करने के लिए है। मैं solr 3.4.0 का उपयोग कर रहा था और spellcheck.q का उपयोग करके मुझे 500 त्रुटि मिली। मैंने 3.6.1 को सोलर अपडेट किया और ऐसा लगता है कि यह सही तरीके से काम करता है।

2

SOLR FST (फ़ील्ड के शुरू से सुझाव), AnalyzingInfix जो हम बुद्धिमान वाक्यांश/शब्द स्वतः सुझाव उत्पन्न करने के लिए लाभ उठा सकते हैं जैसे suggesters प्रदान करता है। कार्यान्वयन http://lucidworks.com/blog/solr-suggester/

कार्यान्वयन के बारे में और जानने के लिए इस आलेख को पढ़ें
संबंधित मुद्दे