我刚打酱油去了,不好意思

ES5.3 BM25文档score=25000,explain后计算过程没问题,score为什么不在1-20范围呢?

Elasticsearch | 作者 core_wzw | 发布于2018年12月11日 | 阅读数:2926

score比较合理的区间不应该处于1到10之间吗?5.3版本一换,默认用的BM25,一看每篇文档都是10000+分,这是正常现象?
 
下面是某篇文档的得分举例:
explain.png

 
可以看到score由十个左右match的特征分sum of而成:
explain1.png

 
每个得分都是由BM25计算而得,系数值均没问题,举个例子。下面是打分特征和对应的explain
  "query": {
"bool": {
"should": [
{
"multi_match": {
"query": "关系型数据库",
"fields": [
"title^5",
...
],
"type": "best_fields",
"minimum_should_match": 4,
"boost": 8
}
}
]
}
}
explain2.png

 
已邀请:

rochy - rochy_he

赞同来自:

可以把 explain 结果贴一下么?

medcl - 今晚打老虎。

赞同来自:

你的分值这么高是你因为你设置了boost权重,条件里外的 boost 权重是乘积关系,各条件的得分是求和的关系,最后一个例子,你对字段title 设置了权重5,对条件设置了权重8,所以,各个子条件得分要分别乘以5*8=40的。
BM25不会一直涨的,这个也是对应于 TF/IDF 的一大好处。
【参考】:https://www.elastic.co/guide/e ... .html

要回复问题请先登录注册