Chcę użyć solr, aby utworzyć rozwijanie autosugestii dla pola wyszukiwania, ale utknąłem podczas próby uzyskania sugestii dla frazy. Kiedy szukam "psa t", chcę uzyskać jeden zestaw wyników zawierający frazy, takie jak "psiarnia", "psia sztuczka", "nieśmiertelniki", ... ale zamiast tego otrzymuję 2 zestawy wyników, jeden dla "psa" "(takie jak "psy", "kości dla psa" "pieska" ...), a inny dla "T"(takich jak "drzewo", "czas" ...)get solr autosuggest wyniki dla frazy
mój adres URL zapytania jest:
http://localhost:8985/solr/mycollection/suggest?q=%22dog%20t%22&wt=json
i moja prośba obsługi jest zdefiniowana w solrconfig jako ...
<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 z „sugerować” jest zdefiniowany w schemacie jako
<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>