2019独角兽企业重金招聘Python工程师标准>>>

我们已经注意到,搜索结果会以相关性的倒序方式返回。但是什么是相关性,它又是如何被计算出来的呢?

每一份被搜索出来的文档都带有一个由正的浮点数来表示的相关性评分,被称为_score。这个分数越高,代表这份文档越相关。

查询子句会为每份文档生成一个评分_score。如何生成这个评分依赖于查询子句的类型。不同类型的查询子句用于不同的目的:模糊查询(fuzzy query)通过计算原始搜索单词与找到单词之间有多相似,来决定相关性评分。然而,我们平常说的相关性指的是那些我们用于计算全文字段与全文查询字符串之间有多相似的算法。

Elasticsearch标配的相似度算法(similarity algorithm)是著名的词频/反向文档频率(term frequency/inverse document frequency),或称为 TF/IDF算法。它将以下计算因子考虑在内:

词频(Term frequency)

指查询语句中的词在某个字段中出现有多频繁?越频繁,越相关。如果这个字段包含了5个查询语句提及到的词,这份文档的相关性当然大于只包含1个的。

反向文档频率(Inverse document frequency)

指查询语句中的词在索引中出现有多频繁?越频繁,越不相关。在很多文档里都出现的词的权重比起那些更不经常出现的更低。

词长基准(Field-length norm)

指这个字段有多长。越长,越不相关。一个词出现在短的title字段中比相同的词出现在长内容的content字段具有更大的权重。

当然,在某些查询语句中会将TF/IDF评分与其它评分因子结合起来使用,如短语查询(phrase query)的词接近度(term proximity)或模糊查询中的词相似度。

然而,相关性不只是用于全文搜索。它同样可以被应用于yes/no的查询子句。文档匹配到的子句越多,评分_score就越高。

当使用组合查询(compound query)——如bool查询——来组合多个查询子句时,各个查询子句的评分被组合起来共同计算出这个文档的评分。



小结

实际上, 在信息检索领域,跳过索引这个概念直接说相关性是不合理的。所以,当这篇文章对于不少人应该是不好理解的。但是没关系。下次我们聊聊什么是索引。

转载于:https://my.oschina.net/zjzhai/blog/419919

Elasticsearch:什么是相关性相关推荐

  1. 【Elasticsearch】实用BM25 -第1部分: shard 如何影响Elasticsearch中的相关性评分

    1.概述 翻译:https://www.elastic.co/cn/blog/practical-bm25-part-1-how-shards-affect-relevance-scoring-in- ...

  2. 深入理解ElasticSearch(六)排序与相关性

    排序与相关性 默认情况下,返回的结果是按照 相关性 进行排序的--最相关的文档排在最前. 在本章的后面部分,我们会解释 相关性 意味着什么以及它是如何计算的, 不过让我们首先看看 sort 参数以及如 ...

  3. ElasticSearch面试题

    Elasticsearch面试问题 1.如何检查Elasticsearch服务器是否正在运行? 通常,ElasticSearch使用9200-9300的端口范围.因此,要检查它是否在您的服务器上运行, ...

  4. Elasticsearch Top 51 重中之重面试题及答案

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | 铭毅天下 来源 | https://mp.we ...

  5. python elasticsearch 入门教程(二) ---全文搜索

    python elasticsearch 入门教程(二) ---全文搜索 截止目前的搜索相对都很简单:单个姓名,通过年龄过滤.现在尝试下稍微高级点儿的全文搜索--一项 传统数据库确实很难搞定的任务. ...

  6. 剖析Elasticsearch集群系列第二篇 分布式的三个C、translog和Lucene段

    http://www.infoq.com/cn/articles/anatomy-of-an-elasticsearch-cluster-part02?utm_source=infoq&utm ...

  7. Elasticsearch 教程--入门

    1.1 初识 Elasticsearch 是一个建立在全文搜索引擎 Apache Lucene(TM) 基础上的搜索引擎,可以说 Lucene 是当今最先进,最高效的全功能开源搜索引擎框架. 但是 L ...

  8. ElasticSearch入门系列(三)文档,索引,搜索和聚合

    一.文档 在实际使用中的对象往往拥有复杂的数据结构 Elasticsearch是面向文档的,这意味着他可以存储整个对象或文档,然而他不仅仅是存储,还会索引每个文档的内容使之可以被搜索,在Elastic ...

  9. Elasticsearch(一)架构及一般性应用

    首先,当我们对记录进行修改时,es会把数据同时写到内存缓存区和translog中.而这个时候数据是不能被搜索到的,只有数据形成了segmentFile,才会被搜索到.默认情况下,es每隔一秒钟执行一次 ...

  10. Elasticsearch用例:全文搜索

    在本系列有关Elasticsearch用例的最后一篇文章中,我们介绍了Elasticsearch提供的用于存储甚至大量文档的功能 . 在这篇文章中,我们将研究其另一个核心功能:搜索. 我正在利用上一篇 ...

最新文章

  1. 【OpenCV 4开发详解】中值滤波
  2. 理解和使用SQL Server中的并行
  3. 九种跨域方式的实现原理,第一个就超惊艳!| 技术头条
  4. 入门深度学习,理解神经网络、反向传播算法是第一关
  5. voms下的反射大师_晓星说数学:让数学家折服的艺术大师埃舍尔
  6. ADO.NET 基础(事务、通用的数据工厂)
  7. 与或非运算(布尔值/非布尔值)
  8. 《剑指offer》面试题6——重构二叉树——已知 前序遍历和中序遍历,求后序遍历(C++)
  9. JDK帮助文档无法打开的常见问题和解决办法
  10. 中国顶级程序员图鉴,最后一个厉害了!
  11. 使用AStar算法解决八数码问题
  12. DOS的古董美(未完待續)
  13. 让XP系统也支持微软雅黑字体
  14. Python——程序设计:商贷月供计算器!谁还没点月供了!
  15. 拜读刘天斯的一个开源项目
  16. 怎么调大计算机浏览器内字体,浏览器字体大小怎么设置,教你浏览器字体大小怎么设置-win7旗舰版...
  17. java定义文章的难度系数
  18. python求梅森尼数_梅森尼数
  19. networkx画图(番外)——(1)自定义节点布局
  20. 【服务器数据恢复】infortrend存储RAID6数据恢复案例

热门文章

  1. V2X测试系列之认识V2X第二阶段应用场景
  2. 编写代码的软件用什么编写的_编写出色的代码
  3. 做人的最高境界是厚道
  4. LeetCode(Python实现)——Easy部分【Day2】
  5. 乌云飘散后,一群白帽子这样成长
  6. 大数据学习系列(九)Hadoop1.X痛点分析及Hadoop2.X提出的解决方案
  7. 帝国cms php序号,帝国cms教程:如何使用灵动标签生成带序号的列表
  8. matlab命令(应该很全了,欢迎补充!)
  9. 腾讯云CDB/CynosDB技术揭秘
  10. The file contains top level spacers. They will not be saved.Perhaps you forgot to create a layout