查询二次评分
Elasticsearch中提供了查询二次评分机制,能对查询的返回文档的前若干个文档重新打分。
其过程是先取得某个查询的命中文档的前N个,然后执行某个公式为这些文档重新打分
如下示例
1 | { |
此时文档的得分就会变成publishTime字段的值再加上原本查询的得分
二次评分参数
- window_size 默认为from、size之和,该参数指定了每个shard中需要二次评分的文档个数
- query_weight 默认为1,第1个查询的得分将乘以该参数,之后再与二次评分查询得分相加
- rescore_query_weight 默认为1,在与第1个查询得分相加之前,二次评分查询得分将乘以该参数
文档最终得分为
1 | 原始得分 * query_weight + rescore_query_weight * 二次查询得分 |
默认情况下文档得分为两个查询得分之和,也可以使用score_mode来改写评分模式
- total 两个查询得分之和
- multiply 两个查询得分之积
- avg 两个查询得分的平均值
- max 两个查询得分中的最大值
- min 两个查询得分中的最小值