elasticsearch|Elasticsearch-14.搜索的相关性算分和Query & Filtering 与多字符串多字段查询

Elasticsearch 搜索的相关性算分 相关性和相关性算分

  • 相关性- Relevance
    • 搜索的相关性算分,描述了一个文档和查询语句匹配的程度。ES 会对每个匹配查询条件的结
      果进行算分_ score
    • 打分的本质是排序,需要把最符合用户需求的文档排在前面。ES5之前,默认的相关性算分
      采用TF-IDF,现在采用BM 25
      elasticsearch|Elasticsearch-14.搜索的相关性算分和Query & Filtering 与多字符串多字段查询
      文章图片
词频TF
  • Term Frequency: 检索词在一 篇文档中出现的频率
    • 检索词出现的次数除以文档的总字数
  • 度量一条查询和结果文档相关性的简单方法:简单将搜索中每一个词的TF进行相加
    • TF(区块链) + TF(的) + TF(应用)
  • Stop Word
    • “的”在文档中出现了很多次,但是对贡献相关度几乎没有用处,不应该考虑他们的TF
逆文档频率IDF
  • DF: 检索词在所有文档中出现的频率
    • 区块链”在相对比较少的文档中出现
    • “应用”在相对比较多的文档中出现
    • “Stop Word”在大量的文档中出现
  • Inverse Document Frequency :简单说= log(全部文档数/检索词出现过的文档总数)
  • TF-IDF本质上就是将TF求和变成了加权求和
    • TF(区块链)*IDF(区块链) + TF(的)*IDF(的)+ TF(应用)*IDF(应用)
elasticsearch|Elasticsearch-14.搜索的相关性算分和Query & Filtering 与多字符串多字段查询
文章图片

TF-IDF的概念
  • TF-IDF 被公认为是信息检索领域最重要的发明
  • 除了在信息检索, 在文献分类和其他相关领域有着非常广泛的应用
  • IDF的概念,最早是剑桥大学的“斯巴克.琼斯”提出
    • 1972年一“关键词特殊性的统计解释和它在文献检索中的应用”
    • 但是没有从理论上解释IDF应该是用log(全部文档数/检索词出现过的文档总数),而不是其他函
      数。也没有做进一步的研究
  • 1970, 1980年代萨尔顿和罗宾逊,进行了进一步的证明和研究,并用香农信息论做了证明
    • http:/ /www.staff.city.ac.uk/~sb317/papers/foundations bm25_ review.pdf
  • 现代搜索引擎,对TF-IDF进行了大量细微的优化
Lucene中的TF -IDF评分公式
elasticsearch|Elasticsearch-14.搜索的相关性算分和Query & Filtering 与多字符串多字段查询
文章图片

BM 25
elasticsearch|Elasticsearch-14.搜索的相关性算分和Query & Filtering 与多字符串多字段查询
文章图片

定制Similarity
elasticsearch|Elasticsearch-14.搜索的相关性算分和Query & Filtering 与多字符串多字段查询
文章图片

通过Explain API查看TF- -IDF
elasticsearch|Elasticsearch-14.搜索的相关性算分和Query & Filtering 与多字符串多字段查询
文章图片

Boosting Relevance
elasticsearch|Elasticsearch-14.搜索的相关性算分和Query & Filtering 与多字符串多字段查询
文章图片

Query & Filtering 与多字符串多字段查询 Query Context & Filter Context
elasticsearch|Elasticsearch-14.搜索的相关性算分和Query & Filtering 与多字符串多字段查询
文章图片

条件组合
  • 假设要搜索一 -本电影,包含了以下一些条件
    • 评论中包含了Guitar, 用户打分高于3分,同时上映日期要在1993与2000年之间
  • 这个搜索其实包含了3段逻辑,针对不同的字段
    • 评论字段中要包含Guitar /用户评分大于3 / .上映日期日期需要在给定的范围
  • 同时包含这三个逻辑,并且有比较好的性能?
    • 复合查询: bool Query
bool查询
  • 一个bool查询,是一个或者多个查询子句的组合
    • 总共包括 4种子句。其中2种会影响算分,2种不影响算分
  • 相关性并不只是全文本检索的专利。也适用于yes |no的子句,匹配的子句越多,相关性评分
    越高。如果多条查询子句被合并为一条复合查询语句,比如bool查询,则每个查询子句计算
    得出的评分会被合并到总的相关性评分中。
elasticsearch|Elasticsearch-14.搜索的相关性算分和Query & Filtering 与多字符串多字段查询
文章图片

bool查询语法
【elasticsearch|Elasticsearch-14.搜索的相关性算分和Query & Filtering 与多字符串多字段查询】elasticsearch|Elasticsearch-14.搜索的相关性算分和Query & Filtering 与多字符串多字段查询
文章图片

如何解决结构化查询-“ 包含而不是相等’的问题
elasticsearch|Elasticsearch-14.搜索的相关性算分和Query & Filtering 与多字符串多字段查询
文章图片

增加计数字段,使用bool查询解决
elasticsearch|Elasticsearch-14.搜索的相关性算分和Query & Filtering 与多字符串多字段查询
文章图片

Filter Context一不影响算分
elasticsearch|Elasticsearch-14.搜索的相关性算分和Query & Filtering 与多字符串多字段查询
文章图片

Query Context -影响算分
elasticsearch|Elasticsearch-14.搜索的相关性算分和Query & Filtering 与多字符串多字段查询
文章图片

bool嵌套
elasticsearch|Elasticsearch-14.搜索的相关性算分和Query & Filtering 与多字符串多字段查询
文章图片

查询语句的结构,会对相关度算分产生影响
elasticsearch|Elasticsearch-14.搜索的相关性算分和Query & Filtering 与多字符串多字段查询
文章图片

  • 同一层级下的竞争字段,具有有相同的权重
  • 通过嵌套 bool查询,可以改变对算分的影响
控制字段的Boosting
elasticsearch|Elasticsearch-14.搜索的相关性算分和Query & Filtering 与多字符串多字段查询
文章图片

Not Quite Not
elasticsearch|Elasticsearch-14.搜索的相关性算分和Query & Filtering 与多字符串多字段查询
文章图片

Boosting Query
elasticsearch|Elasticsearch-14.搜索的相关性算分和Query & Filtering 与多字符串多字段查询
文章图片

    推荐阅读