Elasticsearch
搜索的相关性算分
相关性和相关性算分
- 相关性- Relevance
- 搜索的相关性算分,描述了一个文档和查询语句匹配的程度。ES 会对每个匹配查询条件的结
果进行算分_ score - 打分的本质是排序,需要把最符合用户需求的文档排在前面。ES5之前,默认的相关性算分
采用TF-IDF,现在采用BM 25
- 搜索的相关性算分,描述了一个文档和查询语句匹配的程度。ES 会对每个匹配查询条件的结
词频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(应用)
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评分公式
BM 25
定制Similarity
通过Explain API查看TF- -IDF
Boosting Relevance
Query & Filtering 与多字符串多字段查询
Query Context & Filter Context
条件组合
-
假设要搜索一 -本电影,包含了以下一些条件
- 评论中包含了Guitar, 用户打分高于3分,同时上映日期要在1993与2000年之间
-
这个搜索其实包含了3段逻辑,针对不同的字段
- 评论字段中要包含Guitar /用户评分大于3 / .上映日期日期需要在给定的范围
-
同时包含这三个逻辑,并且有比较好的性能?
- 复合查询: bool Query
bool查询
-
一个bool查询,是一个或者多个查询子句的组合
- 总共包括 4种子句。其中2种会影响算分,2种不影响算分
-
相关性并不只是全文本检索的专利。也适用于yes |no的子句,匹配的子句越多,相关性评分
越高。如果多条查询子句被合并为一条复合查询语句,比如bool查询,则每个查询子句计算
得出的评分会被合并到总的相关性评分中。
bool查询语法
如何解决结构化查询-“ 包含而不是相等’的问题
增加计数字段,使用bool查询解决
Filter Context一不影响算分
Query Context -影响算分
bool嵌套
查询语句的结构,会对相关度算分产生影响
- 同一层级下的竞争字段,具有有相同的权重
- 通过嵌套 bool查询,可以改变对算分的影响