《深入理解Elasticsearch(原书第2版)》一2.1.2 TF/IDF评分公式

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介:

本节书摘来华章计算机《深入理解Elasticsearch(原书第2版)》一书中的第2章 ,第2.1.2节,[美]拉斐尔·酷奇(Rafal Ku) 马雷克·罗戈任斯基(Marek Rogoziski)著 张世武 余洪淼 商旦 译 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

2.1.2 TF/IDF评分公式

从Lucene 4.0版本起,Lucene引入了多种不同的打分公式,这一点或许你已经有所了解了。不过,我们还是希望在此探索一下默认的TF/IDF打分公式的一些细节。请记住,为了调节查询相关性,你并不需要深入理解这个公式的来龙去脉,但是了解它的工作原理却非常重要,因为这有助于简化相关度调优过程。

  1. Lucene的理论评分公式
    TF/IDF公式的理论形式如下:

image

上面的公式融合了布尔检索模型和向量空间检索模型。我们不打算在此讨论理论评分公式,而是直接跳到实践中使用的评分公式,看看Lucene内部是如何实现和使用评分公式的。
 关于布尔检索模型和向量空间检索模型的知识远远超出了本书的讨论范围,想了解更多相关知识,请参考http://en.wikipedia.org/wiki/Standard_Boolean_modelhttp://en.wikipedia.org/ wiki/Vector_Space_Model。

  1. Lucene的实际评分公式
    现在让我们看看Lucene实际使用的评分公式:

image

也许你已经看到了,评分公式是一个关于查询q和文档d的函数,正如我们之前提到的一样。有两个因子并不直接依赖查询词项,它们是coord和queryNorm,这两个因子与查询词项的一个求和公式相乘。
求和公式中每个加数由以下因子连乘所得:词频,逆文档频率,词项权重,范数。范数就是之前我们提到过的长度范数。
这个公式听起来很复杂。请别担心,你并不用记住所有的细节,你只需要意识到哪些因素是与评分有关的即可。从前面的公式我们可以导出一些基本的规则:

  • 越罕见的词项被匹配上,文档得分越高。Lucene认为包含独特单词的文档比包含常见单词的文档更重要。
  • 文档字段越短(包含更少的词项),文档得分越高。通常,Lucene更加重视较短的文档,因为这些短文档更有可能和我们查询的主题高度吻合。
  • 权重越高(不论是索引期或是查询期赋予的权重值),文档得分越高。因为更高的权重意味着特定数据(文档、词项、短语等)具有更高的重要性。
    正如你所见,Lucene将最高得分赋予同时满足以下条件的文档:包含多个罕见查询词项,词项所在字段较短(该字段索引了较少的词项)。该公式更“喜欢”包含罕见词项的文档。

 如果你想了解更多关于Apache Lucene TF/IDF评分公式的信息,请参考Apache lucene 中TFIDFSimilarity类的文档:http://lucene.apache.org/core/4_9_0/core/org/ apache/lucene/search/similarities/TFIDFSimilarity.html.

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
6月前
|
机器学习/深度学习 数据挖掘 索引
Elasticsearch 如何把评分限定在0到1之间?
Elasticsearch 如何把评分限定在0到1之间?
158 0
|
存储 算法 API
Elasticsearch评分相关度算法解析
Elasticsearch评分相关度算法解析
146 0
|
算法 Java
白话Elasticsearch24- 深度探秘搜索技术之TF&IDF算法/向量空间模型算法/lucene的相关度分数算法
白话Elasticsearch24- 深度探秘搜索技术之TF&IDF算法/向量空间模型算法/lucene的相关度分数算法
95 0
|
算法 搜索推荐 索引
Elasticsearch相关度评分算法(三):BM25(Okapi BM25)
Elasticsearch相关度评分算法(三):BM25(Okapi BM25)
Elasticsearch相关度评分算法(三):BM25(Okapi BM25)
|
机器学习/深度学习 自然语言处理 算法
干货 | 一步步拆解 Elasticsearch BM25 模型评分细节
从 Elasticsearch 5 开始,Elasticsearch 的默认相似度算法是 Okapi BM25,Okapi BM25模型于 1994 年提出,BM25 的 BM 是缩写自 Best Match, 25 是经过 25 次迭代调整之后得出的算法,该模型也是基于 TF/IDF 进化来的,Okapi 信息检索系统是第一个实现此功能的系统,之后被广泛应用在不同系统里。 相似性(评分/排名模型)定义了匹配文档的评分方式, 对一组文档执行搜索并提供按相关性排序的结果。在这篇文章中,我们将一步步拆解 Okapi BM25 模型的内部工作原理。
1378 0
干货 | 一步步拆解 Elasticsearch BM25 模型评分细节
|
存储 搜索推荐 算法
实战 | Elasticsearch自定义评分的N种方法
1、期望Elasticsearch搜索结果更准确,不可回避的三个问题 问题1:用户真正的需求是什么? 如果不能获得用户的搜索意图,搜索的准确性无从谈起。 比如:同样输入“锤子”,工匠期望的是钉子对应的“锤子”,老罗的粉丝期望的是“锤子科技”、“锤子便签”、“锤子手机”等。 即使同一用户发出的同一个查询,也可能因为用户所处场景不同,其期望结果也存在很大差异。
732 0
实战 | Elasticsearch自定义评分的N种方法
|
索引
Elasticsearch 评分排序
背景 通过脚本改变评分 背景 近期有一个需求,需要对优惠券可用商品列表加个排序,只针对面值类的券不包括折扣券。 需求是这样的,假设有一张面值券 50 块钱,可用商品列表 A 100、B 40、C 10,当用户查询当前券可用商品列表的时候优先将卡券可以直接抵扣且不需要用户在额外支付的商品排在前面。
1567 0