Ich möchte Solr verwenden, um eine Autosuggestion Drop-Down für ein Suchfeld zu erstellen, aber ich bleibe stecken bei dem Versuch, Vorschläge für eine Phrase zu bekommen. Wenn ich nach "Hund t" suche, möchte ich ein Ergebnisset erhalten, das Sätze wie "Hundegeschmack", "Hundeknacker", "Erkennungsmarken" enthält, aber stattdessen bekomme ich 2 Ergebnissätze, einen für "Hund" "(wie "Hunde" "Hundeknochen" "Hündchen", ...) und eine andere für "t"(wie "Baum" "Zeit" ...)bekommen solr Autosuggest Ergebnisse für Ausdruck
Meine Abfrage url ist:
http://localhost:8985/solr/mycollection/suggest?q=%22dog%20t%22&wt=json
und mein Request-Handler wird in solrconfig definiert als ...
<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>
der Feldtyp von "vorschlagen" im Schema als
0 definiert ist<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>