solr - 限制提升文档的数量
问题描述
我们有一些用例,在开始时我们需要少量的提升文档,但整个结果不应该按提升查询排序。
例子:
- 在前面添加一些付费结果,但是这个应该是有限的,否则,如果有很多,用户只能看到广告,而不是真正的结果。
- 推广一些用户(例如在约会应用中,在顶部显示一些高级用户)
- 在顶部显示漂亮的用户(例如在卡片视图中,在卡片组顶部,应该有一个不错的用户)
目前,我们使用 2 个不同的查询来执行此操作并将结果放在一起(首先 x 个用户来自漂亮/高级/提升列表,然后是其余的),但这使得分页非常复杂和错误,因为我们有 2 个不同的 cursorMarks。
所以我正在寻找一种解决方案来限制提升的文件。
解决方案
您需要使用查询提升组件
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>
推荐阅读
- python - 如何启动 pipenv
- php - 在 WordPress 管理仪表板上删除 WooCommerce 中“添加订单”的子菜单
- angular - Chart.js 中轴标签的文本方向
- html - 水平可滚动容器内的 flexbox 宽度
- docker-compose - 带有多个命令的 docker-compose 入口点
- flutter - 如何将 SVG 添加到 Flutter 中的 AppBar 类?
- python-3.x - 从未等待协程,异步多线程
- angular - 在ngOninit期间是否调用组件方法的角度测试?
- regex - 使用 htaccess 摆脱 /index.php 链接?
- mysql - 从源表离开的点每 1 小时从源表复制一次数据