首页 > 解决方案 > 限制提升文档的数量

问题描述

我们有一些用例,在开始时我们需要少量的提升文档,但整个结果不应该按提升查询排序。

例子:

目前,我们使用 2 个不同的查询来执行此操作并将结果放在一起(首先 x 个用户来自漂亮/高级/提升列表,然后是其余的),但这使得分页非常复杂和错误,因为我们有 2 个不同的 cursorMarks。

所以我正在寻找一种解决方案来限制提升的文件。

标签: solrsolr-boost

解决方案


您需要使用查询提升组件

Query Elevation Component 允许您为给定查询配置最高结果,而不管正常的 Lucene 评分如何。

您可以将 QueryElevationComponent 添加到solrconfig.xml文件中的任何请求处理程序。首先,定义组件:

<searchComponent name="elevator" class="solr.QueryElevationComponent" >
  <!-- pick a fieldType to analyze queries -->
  <str name="queryFieldType">string</str>
  <str name="config-file">elevate.xml</str>
</searchComponent>

该组件可能

  • 包含一个config-file参数 - 在这种情况下,提升的查询结果是在链接的外部 XML 文件中配置的(如上面的示例,请参阅elevate.xml)。
  • 否则,提升的查询结果应在查询时使用elevateIds&excludeIds参数传入。

然后将该组件添加到您的请求处理程序定义中:

<requestHandler name="<yourRequestHandler>" class="solr.SearchHandler">
  <!-- your base configuration -->
  <!-- ....................... -->
  <arr name="last-components">
    <str>elevator</str>
  </arr>
</requestHandler>

推荐阅读