2017-02-25 7 views
4

私はソーラーを作るために太陽の下ですべてを試しました(まあまあそれはsolrと呼ばれています)。大文字小文字を区別しませんが、大文字小文字を区別し続けます。SOLR 6.4.1 Suggesterは大文字と小文字を区別し、大文字と小文字を区別しません。

これはメキシコの提案を返します。さらに、私は成功したドキュメントを返された、私の提案フィールドに対する下ケース/選択検索をしようとした診断するに

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

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

これは、0の結果を返します。 "メキシカン"を含む:

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

しかし、このような幸運のusi Suggesterと小文字を区別する。それは私の<filter class="solr.LowerCaseFilterFactory"/>がSuggesterで使用されても効果がないようです。当然の

私は完全な設定のアップロード、コレクションリロード、データの再インデックス、および提案者は、試験前に再構築しました。私は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を使用することができます提案者に分析しようとする下部ケースをしたい、とあなたはsuggestAnalyzerFieldTypeを通じて分析のためsuggestTextフィールドタイプを使用することを示している場合。

1

WFSTLookupFactoryルックアップimplmentationは大文字と小文字が区別されそうです。

あなたはWFSTLookupFactoryを使用するための具体的な理由を持っていない場合は、FuzzyLookupFactoryを使用することができます。

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

あなたは正しいです! FuzzyLookupFactoryは本当にトリックです!唯一のことは、私はあいまいな結果を望んでいない、私は正確な大文字と小文字を区別しない提案が欲しいだけです。これは大きな進歩ですが、ありがとうございます。 – Magnus

+1

OKを追加することによってのみ、正確な大文字と小文字を区別しないマッチを返すファジー工場を持って最初の40の文字が(ケースを無視)正確に一致しなければならないことを意味し40。それは完全に動作し、私の場合のように短い正確な一致を可能にします。 – Magnus

+0

あなたは回避策を見つけました –

関連する問題