SOLR 6.4.1建议者固执地区分大小写,如何使案例不敏感?

时间:2017-02-25 15:41:52

标签: solr autocomplete case-insensitive search-suggestion

我已经尝试过所有在阳光下的东西(毕竟它被称为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上以云模式运行。有任何想法吗?诊断提示?

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>

2 个答案:

答案 0 :(得分:1)

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

如果您没有使用 WFSTLookupFactory 的任何具体原因,可以使用 FuzzyLookupFactory

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

答案 1 :(得分:1)

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