SOLR 6.4.1 建议器顽固地区分大小写,如何使建议器不区分大小写?



我已经尝试了阳光下的一切(毕竟它被称为solr)使solr建议不区分大小写,但它顽固地继续区分大小写。

这返回了墨西哥人的建议:

http://localhost:8983/solr/mycollection/autocomplete?suggest.q=Mex

这将返回 0 个结果:

http://localhost:8983/solr/mycollection/autocomplete?suggest.q=mex

为了进一步诊断,我尝试了针对我的建议字段的小写/选择搜索,该搜索成功返回了包含"墨西哥"的文档:

http://localhost:8983/solr/mycollection/select?q=suggestions:mex*

但是使用小写与建议器没有这样的运气。就好像我的<filter class="solr.LowerCaseFilterFactory"/>在被建议器使用时没有效果一样。

当然,在测试之前,我进行了完整的配置上传、集合重新加载、数据重新索引和建议器重建。 我在云模式下运行的 SOLR 6.4.1 上。 有什么想法吗? 诊断提示?

架构.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"/>

索尔配置.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>

WFSTLookupFactory显然不采用suggestAnalyzerFieldType参数,因此被忽略。您可以使用AnalyzingLookupFactory,它将根据suggestAnalyzerFieldType分析文本。因此,如果您只想在建议器中分析小写,则可以使用suggestAnalzerFieldType,并指示要使用 suggestText 字段类型通过suggestAnalyzerFieldType进行分析。

似乎 WFSTLookupFactory查找实现区分大小写。

如果您没有任何使用WFSTLookupFactory的特定原因,则可以使用FuzzyLookupFactory

<str name="lookupImpl">FuzzyLookupFactory</str>

最新更新