Solr suggester 在通过上下文字段查询时返回 0 个结果。 在我的例子中,_language 是我的 ContextFieldQuery。 (我将建议者字典值和 BlendedInfixLookupFactory 作为建议者工作的 lookupImpl 传递)
我注意到的是,当查询如下时,结果来了: https://localhost:8983/solr/custom_master_index/suggest?q=avec&suggest.count=6&&suggest=true&suggest.dictionary=mySuggester&suggest.cfq=fr*
如果 cfq 作为 fr* 传递,那么我就可以看到建议结果。 但是,当我通过 suggest.cfq=fr-CA (实际上是从代码后面作为上下文语言传递的)时,结果是 0.
阅读更多相关内容后,我了解到这是因为 cfq _language 字段是一个标记化字段,它将值“fr”和“CA”分解为 2 个不同的值。
但是有人可以帮我解决这个问题吗?
以下是我的建议配置详细信息:
<searchComponent name="suggest" class="solr.SuggestComponent">
<lst name="suggester">
<str name="name">WEMSuggester</str>
<str name="lookupImpl">BlendedInfixLookupFactory</str>
<str name="dictionaryImpl">DocumentDictionaryFactory</str>
<str name="field">autosuggestiontitle_sm</str>
<str name="contextField">_language</str>
<str name="suggestAnalyzerFieldType">text_suggester</str>
<str name="highlight">true</str>
<str name="buildOnStartup">false</str>
<str name="buildOnOptimize">true</str>
<str name="buildOnCommit">true</str>
</lst>
</searchComponent>
<requestHandler name="/suggest" class="solr.SearchHandler" startup="lazy" >
<lst name="defaults">
<str name="suggest">true</str>
<str name="suggest.count">10</str>
<str name="suggest.dictionary">WEMSuggester</str>
</lst>
<arr name="components">
<str>suggest</str>
</arr>
</requestHandler>
<fieldType name="text_suggester" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/>
<filter class="solr.SynonymFilterFactory" expand="true" ignoreCase="true" synonyms="synonyms.txt"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
<field name="autosuggestiontitle_sm" type="text_suggester" multiValued="true" indexed="true" stored="true"/>