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

时间:2017-01-05 23:27:02

标签: solr lucene solrj autosuggest solr6

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

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

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

因此,包含suggestcomponent的requesthandler能够在结果数组中显示两个字符串: thisisatitle.com 这是一个标题

我尝试过的事情是:

  • 多个建议组件

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

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

1 个答案:

答案 0 :(得分:1)

要使用多个建议词典(可以应用不同的分析器),您可以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>