0

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

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

  • 使用 StandardTokenizer 的字段示例输出:这是一个标题
  • 使用自定义标记器的字段(基本上是一个正则表达式来获取完整 URL 的基本域)示例输出:thisisatitle.com

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

我尝试过的事情是:

  • 多个建议组件

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

欢迎任何建议/解决方法。

4

1 回答 1

1

要使用多个建议字典(可以应用不同的分析器),您可以使用文档中所示的“多个字典”配置

<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>
于 2017-01-09T14:25:34.083 回答