我想使用solr为搜索字段创建自动提示下拉菜单,但在尝试获取短语的建议时我遇到了困难。当我搜索“dog t”时,我想得到一个结果集,其中包含诸如“dog treat”,“dog trick”,“dog tags”等短语,但我得到2个结果集,一个用于“dog “(例如”狗“”狗骨头“”狗狗“...)和另一个”t“(例如”树“”时间“......)
我的查询网址是:
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>
“suggest”的字段类型在架构中定义为
<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>
答案 0 :(得分:6)
我找到了2个问题的解决方案......
一种是创建一个自定义queryHandler,它不会将q参数拆分成多个单词。
我选择的另一个选项是使用参数spellcheck.q而不是q。我使用solr 3.4.0并使用spellcheck.q给了我500错误。我将solr更新为3.6.1,它现在似乎正常工作。
答案 1 :(得分:2)
SOLR提供 FST (来自字段开头的建议), AnalyzingInfix 等建议,我们可以利用它来生成智能短语/单词自动建议。 阅读本文以了解有关实施的更多信息 http://lucidworks.com/blog/solr-suggester/
答案 2 :(得分:0)