【HBZ分享】ES的评分score机制的原理

文章讲述了如何在Elasticsearch(ES)中利用基础评分boost、逆向文档频率IDF和关键词在文档中的频率TF来定制查询评分。通过指定boost值,可以控制不同关键词的得分优先级。ES还支持内置评分函数和自定义评分插件以满足特定需求。
摘要由CSDN通过智能技术生成

score类型

  1. 基础评分boost,默认2.2,
  2. 逆向文档频率值(IDF):表示该词再文档中(ES中)出现的次数越多,表示越不重要,评分越低
  3. 关键词在文档中出现的频率(TF):表示该词在文档中出现的频率,频率越高表示越重要,评分越高
    注意: IDF是出现次数越多,则评分越低, 而TF是出现次数越高,则评分越高,一正一反

score评分机制的计算

  1. boost × idf × tf
  2. 字段的权重 × 逆向文档频率的值 × 关键词在文档中出现的频率值

ES查询时带上评分计算

加上explain 和mysql查看索引使用情况是同一个词
GET /test_index/_search?explain=true

如何自定义评分机制

  1. 权重配置: 通过指定boost基础评分,来定制总评分, 查询请求如下,需要指定boost,来定制哪个词查询基础分更大,即相同频率下该次就会评分更高,会放在前面
GET /test_index/_search
{
	"query": {
		"bool": {
			"should": [
				{
					"match": {
						"summary": {"query": "boot", "boost": 1} // 指定查boot的基础评分boost = 1, 不指定boost则默认2.2
					}
				}, 
				{
					"match": {
						"summary": {"query": "java", "boost": 3} // 指定查boot的基础评分boost = 3, 不指定boost则默认2.2
					}
				}, 
				{
					"match": {
						"summary": {"query": "cloud", "boost": 1} // 指定查boot的基础评分boost = 1, 不指定boost则默认2.2
					}
				},
				{
					"match": {
						"summary": {"query": "spring", "boost": 1} // 指定查boot的基础评分boost = 1, 不指定boost则默认2.2
					}
				}, 
			]
		}
	}
}
  1. 公式定制化: ES提供了一些内置评分函数(BM25), 根据需要进行参数调整,或者使用自定义评分函数来实现
  2. 自定义评分插件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值