Solr 建议者:上下文过滤器错误地应用于 FileDictionaryFactory

Solr suggester: Context Filter incorrectly applied to FileDictionaryFactory

docs 中,它表示上下文过滤仅在“使用 AnalyzingInfixLookupFactoryBlendedInfixLookupFactory 时生效,当由 DocumentDictionaryFactory 支持时”。

但是,我发现在使用 FileDictionaryFactory 时会应用上下文过滤。这不起作用,因为没有要应用上下文过滤器的文档。

http://localhost:8983/solr/mycore/suggest?qt=suggest&suggest.dictionary=location&q=russia
> Returns ["Russia"]

http://localhost:8983/solr/mycore/suggest?qt=suggest&suggest.dictionary=location&q=russia&cfq=a
> Returns []

这是我的建议配置:

<searchComponent name="suggest" class="solr.SuggestComponent">
  <lst name="suggester">
    <str name="name">location</str>
    <str name="lookupImpl">AnalyzingInfixLookupFactory</str>
    <str name="dictionaryImpl">FileDictionaryFactory</str>
    <str name="sourceLocation">tdwg.txt</str>
    <str name="suggestAnalyzerFieldType">text_general</str>
    <str name="highlight">false</str>
  </lst>

  <lst name="suggester">
    <str name="name">common-name</str>
    <str name="lookupImpl">AnalyzingInfixLookupFactory</str>
    <str name="dictionaryImpl">DocumentDictionaryFactory</str>
    <str name="field">region.vernacular_names_t</str>
    <str name="indexPath">common_name_suggest</str>
    <str name="contextField">searchable.context_ss</str>
    <str name="suggestAnalyzerFieldType">text_general</str>
    <str name="highlight">false</str>
  </lst>
</searchComponent>

如您所见,我 想要对其中一位建议者进行上下文过滤(并且它工作正常)。所以我不能简单地从我的请求中删除 suggest.cfq 参数。

我是否可以更改我的配置,以便上下文过滤器不会应用于我的 FileDictionaryFactory 推荐者?

我过去已经遇到过这个问题,似乎当请求中存在 suggest.cfq 时,上下文过滤将应用于 every(启用)查找支持它的实现(AnalyzingInfix 和 BlendedInfix)。

似乎除了切换到另一个查找实现之外没有其他解决方案。对于您不想应用上下文过滤的字典,比这 2 个要多。

例如,您可以尝试将 FuzzyLookupFactory 用于“位置”建议者,并且不会应用上下文过滤器。


注意: 这是一种变通方法,因为不可能 infix 与 FuzzyLookup 或 AnalyzingLookup 实现匹配(只有整个前缀来自输入令牌的考虑在内)。

如果您真的需要两个建议者的中缀匹配,您可能必须在合并建议之前发出 2 个并行请求 :/.