Elasticsearch 搜索的功能学习

2020-05-22 00:00:00 查询 字段 文档 匹配 相关性

在文章 Elasticsearch 入门学习 中介绍了 Elasticsearch 的基础概念以及一些常用的 API。这篇文章是继续对 Elasticsearch 中一些的搜索功能的学习和总结:

搜索的相关性以及算分机制

是什么是相关性算分?

  • 相关性算分描述了一个文档和查询语句的匹配程度,ES 会对查询到的每个文档进行打分,打分的本质就是排序
  • ES5 之前默认的相关性打分采用 TF-IDF 算法,TF-IDF 是信息检索领域重要的发明,现代搜索引擎都对 TF-IDF 做了大量细微的优化
  • ES6 之后开始采用 BM25 算法(对 TF-IDF 的改进),当 TF 无限增加时, BM 25 算法会使之趋于一个稳定的数值
  • 在 ES 中查询加上 explain=true 可以查看当前查询是如何打分的
  • 影响相关性算分的几个因子:
1. 词频-TF(Term Frequency):检索词在一篇文档中出现的频率,频率越高,权重越大
2. 文档频率-DF(Document Frequency)- 检索词出现的文档数量占总文档数量的比重,DF 越大,出现的文档数越多,说明对应用意义越小,该词的相关性也就越小,
   比如 "and", "is" 这些词出现非常频繁,用户反而不关心
3. 逆向文档频率-IDF(Inverse document frequency)- 因为 DF 的值算出来结果范围会非常大,为了减少 DF 对打分的影响,引入了 IDF,其实就是对 DF 取对数来减少打分影响
4. 字段长度(Field-length)- 搜索的字段越短,相关性越高

相关文章