什么是文档匹配度?
在ES中执行一个搜索请求在默认情况下搜索的结果集是按照匹配度倒序排列。但是什么是文档匹配度?它是如何被计算的呢?
每个文档的匹配度评分在es中被表示为一个浮点型的正数——“_score”,文档的_score评分越高,文档与搜索词的匹配度越大。
在查询中一个查询子句会为每一个文档生成一个_score,文档评分的计算依赖于具体查询子句的类型,不同的查询子句被用在不同的搜索场景中,比如:一个fuzzy查询的_score表示拼写所找到的关键词和原始搜索请求中的词的相似度,一个terms查询的_score表示我们查询的词在文档中所占的百分比。那么,我们通常所说的查询字符串与文档的匹配算法是什么呢?
在Elasticsearch中标准的相似度算法叫做 term freqyency/inverse document frequency(也叫做TF/IDF),该算法是在Lucene中实现,以下是Lucene计算文档评分的公式:
TF-I