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.com 和 This 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>
我无法找到一种方法如何在一个建议组件 中拥有 2 个不同结构的字段。 (https://cwiki.apache.org/confluence/display/solr/Suggester)
目标是拥有一个包含这些字段的自动完成模块。
- 使用StandardTokenizer的字段 示例输出:This is a title
- 使用自定义分词器的字段(基本上是一个正则表达式,用于获取完整 URL 的基本域) 示例输出:thisisatitle.com
因此,包含建议组件的请求处理程序能够在结果数组中显示两个字符串:thisisatitle.com 和 This 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>