固定评分查询

更新时间:
复制为 MD 格式

固定评分查询(ConstScoreQuery)将子查询包装为过滤条件,所有命中的文档统一返回固定的相关性分数(1.0),不再根据 BM25 等算法计算相关性评分。

接口

固定评分查询的接口为 Search 或 ParallelScan,Query 类型为 ConstScoreQuery。

参数

参数

说明

filter

内部子查询条件,支持任意一种 Query 类型(如 MatchQuery、TermQuery、BoolQuery 等)。ConstScoreQuery 仅判断文档是否命中该子查询,命中即返回固定分数 1.0,不参与 BM25 相关性评分计算。

getTotalCount

是否返回匹配的总行数,默认为 false,表示不返回。返回匹配的总行数会影响查询性能。

tableName

数据表名称。

indexName

多元索引名称。

columnsToGet

是否返回所有列,包含 returnAll 和 columns 设置。returnAll 默认为 false,表示不返回所有列;当设置 returnAll 为 true 时,表示返回所有列。在 returnAll 为 false 时,可以通过 columns 指定返回的列,未指定时只返回主键列。

适用场景

  • 业务只关心文档是否命中而不关心相关度排序时,使用 ConstScoreQuery 可消除因文本长度、词频等因素导致的评分差异,将排序权交给后续自定义排序逻辑(如 FieldSort、PrimaryKeySort)。

  • 在 BoolQuery 的 mustQueries 中对部分子句使用 ConstScoreQuery 包装,可消除这些子句的评分贡献,仅保留其他子句的相关性分数作为最终排序依据。

  • 查询条件仅用于过滤而非排序时,使用 ConstScoreQuery 可减少不必要的评分计算开销。

与 BoolQuery filterQueries 的区别

对比项

BoolQuery filterQueries

ConstScoreQuery

评分贡献

不贡献任何分数

贡献固定分数 1.0

使用位置

只能作为 BoolQuery 的 filterQueries 子句

可独立使用,也可放在 BoolQuery 的 mustQueries 或 shouldQueries 中

典型用途

纯过滤,不影响排序

需要占位评分(如与其他带评分 query 组合时统一基准分)

使用方式

Tablestore 多元索引同时提供 Java SDK 和 Go SDK 实现固定评分查询。