ElasticSearch 中使用衰减函数来完美你的搜索结果

最近的项目在原有的搜索需求增加功能
* ElasticSearch 7.6 (请注意,大版本不同可能参数不同)


原有搜索:简单的标题+正文 全文索引
新加功能:在原有的基础上,更加完善排序结果。可以由多种因素控制。发布时间(发布太久的了得分需下降)后台给予的权重值(权重值越高越好)热度

调研了一下文档,发现ElasticSearch完美支持这样的需求,只需要自己定义好递减函数即可。

ES 内置了衰减函数(Decay Function)的支持。对于数值、日期和地理位置类型,可以设置一个理想的值,如果实际的值越偏离这个理想值(无论是增大还是减小),就越不符合期望,分数就越低。

它支持如下参数:

  • origin:原点,该字段最理想的值,这个值可以得到满分(1.0)
  • offset:偏移量,与原点相差在偏移量之内的值也可以得到满分
  • scale:衰减规模,当值超出了原点到偏移量这段范围,它所得的分数就开始进行衰减了,衰减规模决定了这个分数衰减速度的快慢
  • decay:衰减值,该字段可以被接受的值(默认为 0.5),相当于一个分界点,具体的效果与衰减的模式有关

《ElasticSearch 中使用衰减函数来完美你的搜索结果》
* linear 直线衰减,在 0 分外的值都是 0 分
* exp 衰减速度先快后慢
* gauss 衰减速度先慢后快再慢

我的参数配置如下:


引用文档:
https://www.elastic.co/guide/en/elasticsearch/reference/7.6/query-dsl-function-score-query.html
知乎Live全文搜索之使用Elasticsearch全文搜索

点赞