Solr - 建议具有 2 种不同字段类型的组件

Solr - Suggest Component with 2 different field types

我无法找到一种方法如何在一个建议组件 中拥有 2 个不同结构的字段。 (https://cwiki.apache.org/confluence/display/solr/Suggester)

目标是拥有一个包含这些字段的自动完成模块。

  • 使用StandardTokenizer的字段 示例输出:This is a title
  • 使用自定义分词器的字段(基本上是一个正则表达式,用于获取完整 URL 的基本域) 示例输出:thisisatitle.com

因此,包含建议组件的请求处理程序能够在结果数组中显示两个字符串:thisisatitle.comThis is a title

我尝试过的是:

  • 多个建议组件

我用谷歌搜索,目前找到的唯一解决方案是使用分片,因为它们允许组合不同的模式。在我看来,这是相当低效的,因为 运行 2 个服务器会浪费资源,而且可维护性也会受到影响。

欢迎任何suggestions/workarounds。

要使用多个建议词典(可以应用不同的分析器),您可以use the "multiple dictionaries" configuration as shown in the documentation:

<searchComponent name="suggest" class="solr.SuggestComponent">
  <lst name="suggester">
    <str name="name">mySuggester</str>
    <str name="lookupImpl">FuzzyLookupFactory</str>     
    <str name="dictionaryImpl">DocumentDictionaryFactory</str>     
    <str name="field">cat</str>
    <str name="weightField">price</str>
    <str name="suggestAnalyzerFieldType">string</str>
  </lst>
  <lst name="suggester">
    <str name="name">altSuggester</str>
    <str name="dictionaryImpl">DocumentExpressionDictionaryFactory</str>
    <str name="lookupImpl">FuzzyLookupFactory</str>
    <str name="field">product_name</str>
    <str name="weightExpression">((price * 2) + ln(popularity))</str>
    <str name="sortField">weight</str>
    <str name="sortField">price</str>
    <str name="storeDir">suggest_fuzzy_doc_expr_dict</str>
    <str name="suggestAnalyzerFieldType">text_en</str>
  </lst> 
</searchComponent>