2017-02-25 83 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

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