我已经尝试了各种方法(毕竟它叫solr),让solr Suggest不区分大小写,但它仍然固执地区分大小写。
这会返回一个Mexican的建议:
http://localhost:8983/solr/mycollection/autocomplete?suggest.q=Mex
这个返回0个结果:
http://localhost:8983/solr/mycollection/autocomplete?suggest.q=mex
为了进一步诊断,我尝试了针对建议字段的小写/select搜索,成功返回包含“Mexican”的文档:
http://localhost:8983/solr/mycollection/select?q=suggestions:mex*
但是在使用Suggester时,使用小写字母并没有这样的好运。就好像我的
<filter class="solr.LowerCaseFilterFactory"/>
对Suggester没有影响一样。当然,在测试之前,我做了完整的配置上传、集合重新加载、数据重新索引和suggester重建。我正在运行云模式下的SOLR 6.4.1。有什么想法或者诊断提示吗?
schema.xml
<fieldType name="textSuggest" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
<field name="recipe" type="text_general" indexed="true" stored="true" multiValued="false" />
<field name="suggestions" type="textSuggest" indexed="true" stored="true" multiValued="true" />
<copyField source="recipe" dest="suggestions"/>
solrconfig.xml
<searchComponent class="solr.SuggestComponent" name="suggest">
<lst name="suggester">
<str name="name">foodsuggester</str>
<str name="lookupImpl">WFSTLookupFactory</str>
<str name="dictionaryImpl">DocumentDictionaryFactory</str>
<str name="field">suggestions</str>
<str name="buildOnStartup">false</str>
<str name="buildOnCommit">false</str>
<str name="storeDir">suggester_wfst_dir</str>
<str name="suggestAnalyzerFieldType">textSuggest</str>
</lst>
</searchComponent>
<requestHandler name="/autocomplete" class="solr.SearchHandler" startup="lazy">
<lst name="defaults">
<str name="suggest">true</str>
<str name="suggest.dictionary">foodsuggester</str>
<str name="suggest.count">10</str>
</lst>
<arr name="components">
<str>suggest</str>
</arr>
</requestHandler>