【问题标题】:How to configure multiple contextfields in single solr suggester?如何在单个 solr 建议器中配置多个上下文字段?
【发布时间】:2016-03-18 08:21:59
【问题描述】:

我正在使用 apache solr 在我当前的应用程序中搜索记录。

通过配置上下文字段,我能够根据 DocumentType 过滤建议。

现在我想添加另一个上下文字段,例如部门类型。我不确定如何为多个上下文字段配置建议器。

这是与单个上下文字段一起使用的建议器,并且工作正常。

 <searchComponent name="suggest" class="solr.SuggestComponent">
  <lst name="suggester">
     <str name="name">suggesterByName</str>
     <str name="lookupImpl">AnalyzingInfixLookupFactory</str>
     <str name="dictionaryImpl">DocumentDictionaryFactory</str>
     <str name="field">fullName</str>
     <str name="contextField">documentType</str>
        <str name="suggestAnalyzerFieldType">text_general</str>
     <str name="buildOnStartup">false</str>
   </lst>
 </searchComponent>

我参考这篇文章 https://issues.apache.org/jira/browse/SOLR-7888

但仍不清楚如何在单个建议器中配置多个上下文字段。

【问题讨论】:

  • 你找到答案了吗?我有类似的要求,看起来 SOLR-7888 使用布尔查询支持给定上下文字段的多个值。

标签: solr spring-data-solr


【解决方案1】:

您必须在 schema.xml 中创建一个新字段作为 context_field。 这个字段应该有multivalued=true

<field name="context_field" type="text_suggest" multiValued="true" indexed="true" stored="true"/>

然后你必须在 json 中创建这个 context_field 作为列表,以便在 solr 中进行索引。

"context_field" : ["some document type", "some department type"]

索引后你可以这样建议-

suggest.q=b&suggest.cfq=context_documentType AND context_departmentType

希望有效果

【讨论】:

  • 你知道是否可以返回按上下文字段分组的建议吗?
  • @FabrizioFortino 你能解释一下“按上下文字段分组”吗??
  • 上下文过滤允许您使用单独的上下文字段过滤建议。有没有办法返回按上下文字段分组的建议?例如,我有这些文档:{name: aaaa, suggest: mercedes, type: car}, {name: bbbb, suggest: mazda, type: car}, {name: cccc, suggest: mazda, type: car}, {name: dddd, suggest: mercedes, type: bike} 假设用户输入“m”,我想找回 {suggest: mazda, type: car, count: 2}, {suggest: mercedes, type: car, count: 1}, {suggest: mercedes, type: bike, count: 1}
  • 如果您使用的是 solr 的内置自动提示器,我认为没有任何直接的方法可以通过上下文字段获取组结果,但是 solr 中有方面查询可能您可以使用它。 facet query example
猜你喜欢
  • 2020-11-22
  • 2018-12-22
  • 2011-12-04
  • 1970-01-01
  • 1970-01-01
  • 2012-10-02
  • 2015-04-09
  • 1970-01-01
  • 2011-11-09
相关资源
最近更新 更多