ES在搜索和数据分析中的应用越来越广泛,在之前项目中对ES的使用有些心得,最近有不少朋友和同事都问到了ES,刚好最近也有些时间,所以打算通过8~10篇文章介绍下ES.(其实我也不知道最终会写下多少篇),为了保持阅读的连贯性,可以先看前面几篇文章:
ES搜索引擎入门+最佳实践(一)_flame.liu的博客-优快云博客
ES搜索引擎入门+最佳实践(二)_flame.liu的博客-优快云博客
ES搜索引擎入门+最佳实践(三)_flame.liu的博客-优快云博客
ES搜索引擎入门+最佳实践(四)_flame.liu的博客-优快云博客
ES搜索引擎入门+最佳实践(五)_flame.liu的博客-优快云博客
一.概要
本篇文章会向大家介绍ES的搜索排序功能,在进行搜索的时候,ES可以给搜索结果打分,并且根据打分的高低进行排序.这里提到的打分涉及到搜索算法,搜索算法有很多种,ES常用的是BM25算法,在大多数情况下我们并不需要深究这个算法内部是怎么样的,只需要知道如何利用这些算法达到我们的目的.所以我打算从以下几个方面介绍ES的搜索排序功能的运用.先来看看见到介绍,再一步步慢慢了解.
1) 设置权重:通过多条件搜索时,可以增加核心关键词的权重,以此提高核心词相关度排名.
2) function score 查询:function score查询中提供了一些函数,在多条件查询中通过这些函数可以更加灵活的给文档评分.
3) script score 查询:script score查询允许编写脚本的方式给文档进行打分.
4) 二次打分:当查询大量文档时,如果需要给每个文档都进行评分,那么性能消耗肯定是很大的,所以可以先筛选出部分文档,再根据这部分文档进行打分和排序.
下面这个表列出了本章使用到的ES的关键词
关键词 | 说明 |
boost | 搜索权重值,默认为1,因为与参数"相当"于一个乘积关系,所以当取值为(0~1)时,相当于降权,大于1时权重提升. |