BLCL的博客小馆

标签 · track_scores

首页

关于

归档

Elasticsearch 评分机制Elasticsearch 排序term terms 评分差异bool 查询filter shouldsort _scorefunction_score 时间衰减BM25 评分Elasticsearch 性能优化相关性排序混合排序搜索结果排序Elasticsearch 踩坑二级排序minimum_should_matchtrack_scoresrewrite scoring_boolean精确匹配 评分全文检索 排序ES 查询 DSL 实战

Elasticsearch排序与评分机制记录:关于term和terms权重与filter和should

最近在优化一个全文检索业务时,遇到了一个典型的排序场景:用户要求搜索结果首先按相关性排序,相关性相同时按创建时间倒序。听起来很简单对吧?但当我真正上手写 DSL 时,才发现 must、filter、should 以及 sort 之间的微妙关系远比想象中复杂。 研究发现了 term 查询在 must 与 filter 中的评分差异、terms 为何默认得分恒定、以及如何利用 bool + should + sort 实现“硬过滤 + 软评分”的混合排序。 问题背景 业务场景是文章搜索,核心需求如下: 硬性筛选:只返回状态为 published、且创建时间在某个时间点之后的文章。 相关性排序:根据用户输入的关键词(如标签、作者)计算匹配度,分数越高越靠前。 时间兜底:当两篇文章的相关性分数完全一致时,最新的文章排..

更多