2017-02-25 85 views
4

我已经尝试了太阳下的所有东西(它完全称为solr),以使solr Suggest不区分大小写,但它固执地继续区分大小写。SOLR 6.4.1提示器固执地区分大小写,如何区分大小写?

这将返回墨西哥的建议:

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* 

但没有这样的幸运usi小写与提示器。就好像我的<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> 

回答

1

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

1

看来WFSTLookupFactory查找implmentation是区分大小写的。

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

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

嘿,你是对的! FuzzyLookupFactory的确有诀窍!唯一的是,我不想模糊结果,我只想要确切的不区分大小写的建议。尽管这是一个很大的进步,谢谢。 – Magnus

+1

确定模糊工厂通过添加 40只返回确切的不区分大小写的匹配,这意味着前40个字符必须完全匹配(无视案例)。它完美的工作,并仍然允许缩短精确匹配,例如在我的情况。 – Magnus

+0

很棒,你找到了解决方法 –