SOLR 6.4.1 Suggester 顽固地区分大小写,如何使大小写不敏感?
SOLR 6.4.1 Suggester is stubbornly case-sensitive, how to make case-insensitive?
为了让 solr Suggest 不区分大小写,我已经尝试了一切(好吧,毕竟它被称为 solr),但它顽固地继续区分大小写。
这个returns墨西哥人的建议:
http://localhost:8983/solr/mycollection/autocomplete?suggest.q=Mex
这 returns 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"/>
在被建议者使用时没有效果一样。
我当然在测试前进行了完整的配置上传、集合重新加载、数据重新索引和建议重建。我在云模式下使用 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>
WFSTLookupFactory 查找实现似乎区分大小写。
如果您没有任何特定原因需要使用 WFSTLookupFactory。
,您可以使用 FuzzyLookupFactory
<str name="lookupImpl">FuzzyLookupFactory</str>
WFSTLookupFactory
显然没有带suggestAnalyzerFieldType
参数,被忽略了。您可以使用 AnalyzingLookupFactory
,它将根据 suggestAnalyzerFieldType
分析文本。所以如果你只想在suggester中分析小写可以使用suggestAnalzerFieldType
,通过suggestAnalyzerFieldType
.
表明你想使用suggestText字段类型进行分析
为了让 solr Suggest 不区分大小写,我已经尝试了一切(好吧,毕竟它被称为 solr),但它顽固地继续区分大小写。
这个returns墨西哥人的建议:
http://localhost:8983/solr/mycollection/autocomplete?suggest.q=Mex
这 returns 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"/>
在被建议者使用时没有效果一样。
我当然在测试前进行了完整的配置上传、集合重新加载、数据重新索引和建议重建。我在云模式下使用 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>
WFSTLookupFactory 查找实现似乎区分大小写。
如果您没有任何特定原因需要使用 WFSTLookupFactory。
,您可以使用 FuzzyLookupFactory<str name="lookupImpl">FuzzyLookupFactory</str>
WFSTLookupFactory
显然没有带suggestAnalyzerFieldType
参数,被忽略了。您可以使用 AnalyzingLookupFactory
,它将根据 suggestAnalyzerFieldType
分析文本。所以如果你只想在suggester中分析小写可以使用suggestAnalzerFieldType
,通过suggestAnalyzerFieldType
.