Lucene 默认评分机制
一、计算文档得分需要考虑以下因子
1.文档权重(document boost)
索引期赋予某个文档的权重值
2.字段权重(field boost)
查询期赋予某个字段的权重值
3.协调因子(coord)
基于文档中词项命中个数的协调因子,一个文档中命中了查询中的词项越多,得分越高
比如:查询关键词被分词为A和B,如果文档1命中了A和B,文档2命中了A,那么在这个项目上,文档1的分数更高
4.逆文档频率(inverse document frequency)
一个基于词项的因子,用来告诉评分公式该词项有多么罕见,逆文档频率越低,词项越罕见,评分公式利用该因子为包含罕见词项的文档加权
比如:查询关键词是A和B,如果文档1命中了A,文档2命中了B,但是在整个文档范围内,A 出现的次数比 B 少,那么在这个项目中,文档1分数更高
5.长度范数(length norm)
每个字段的基于词项个数的归一化因子,一个字段包含的词项越多,改因子的权重越低,这意味着 lucene 评分公式更 喜欢 包含更少词项的字段
比如:查询关键词是A,文档1和2都匹配上了A,但是文档1内容长度比文档1短,那么在这个项目中,文档1分数更高
6.词频
一个基于词项的因子,用来表示一个词项在某个文档中出现多少次,词频越高,文档得分越高
比如:查询关键词是A,文档1和文档1都匹配上了,但是文档1中出现了 2 次 A,文档 2 中出现了 1 次 A,那么在这个项目中,文档1分数更高
7.查询范数(query norm)
一个基于查询的归一化因子,它等于查询中词项的权重平方和,查询范数使得不同查询的得分能相互比较,尽管这种比较通常是困难且不可行的
二、一些规则
越多罕见的词项被匹配上,文档分数越高
文档字段越短,文档分数越高
权重越高(无论是索引期还查询期赋予的权重值),文档得分越高
三、elasticsearch 如何看评分
elasticsearch 使用了 lucene 的评分功能,但是好在我们可以替换默认的评分算法,elasticsearch 使用了 Lucene 的评分功能但是不仅限于 lucene 的评分功能,用户可以使用各种不同的查询类型以精确控制文档的评分计算如 custom_boost_factor 查询、constant_score 查询,custom_score 查询)还可以通过使用脚本(scrpting)来改变文档得分,还可以使用二次评分功能,通过在返回文档集合之上执行另外一个查询,重新计算前 N 个文档得分
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论