Elasticsearch func_score

场景介绍

衰减函数

总结

官网文档:https://www.elastic.co/guide/en/elasticsearch/reference/7.x/query-dsl-function-score-query.html

作者公众号:在这里插入图片描述

1.场景介绍

在全文检索中,排序是一个很讲究的事。关键字命中,是全文检索中一个很关键的因素。然而,某些时候,我们关键字的命中可能非常低,或者来两个doc中关键字的命中分数相差很小。

举个例子:有两个店家,他们上架了差不多的商品,在商品信息里面,信息大同小异。在我们输入关键字“xx商品”时,关键字命中得分相同,或者差异性很小,这个时候我们可能需要根据场景去用其他得分来影响排序。可能我们的业务需求是最近上新的应该在前面,于是我们引入了上架时间(launchTime)因子;可能我们还需要店铺距离用户的距离(location);或者我们需要根据店铺的欢迎程度(likeNumber)等等
所以我们需要一个综合的得分计算规则,不仅仅包含关键词的命中,还需要其他因子来做决定。

2.衰减函数

直接上图
先来看看DSL,如何实现时间对分数的影响

在这里插入图片描述
重点说一下衰减函数几个参数的含义:
在这里插入图片描述
看图说话:

origin: 衰减度最低的地方,也就是值为1的点

offset: 针对origin的偏移,在origin-offset范围内的数据,衰减度不变,保持为1;

decay: 配合scale ,可以决定衰减的速度,值为某一个分数。

scale: 值为x轴的某个数值,影响衰减速度

打个比方:origin 是时间类型,origin=”now“,offset=2d,scale=10,decay=0.5,那么表达的含义就是:从现在时间点为标准,两天内的数据时间分数是相同的,超过两天的数据,保证距离现在12(scale+offset)天时,函数计算的得分为0.5。
java代码的表达方式如下:
在这里插入图片描述
代码语义:
定义了3个衰减函数,分别是距离、更新时间、pv(浏览量)。
距离用户所在地的10km以内的数据,距离得分相同,10-30km,分数开始衰减,到30km的时候,分数衰减到0.5
更新时间7天以内的数据,时间上计算得分相同,7-14天,得分衰减,14天时,得分衰减到0.3
3. pv 为利用衰减函数,采用了逆向思维,当pv达到10000000时,得分为1,scale 设置为 origin-50,想表达的意思是pv在0-50的时候,分数递增到0.99.主要是前期应对前期pv量不足的情况。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值