Elasticsearch之相关性评分

一、概念:

     1、相关性:

       确切地说,应该加限定词,应该称作,已匹配到的内容的相关性。通俗地讲,就是已匹配到的内容跟要搜索的词(或句子)像不像。其中,已匹配到的内容,是指那些匹配了部分的搜索词的内容,或者完全和搜索词一模一样,这样就算匹配。而这个“像不像”,有一模一样,9分像,3分像的区别,而这个到底有多像,就是相关性。相关性评分是一个用数字量化的值,值越高,表示相关性越强,和要搜索的内容越接近。

二、计算:

       Elasticsearch 的相关性评分用一个正浮点数字段 _score 来表示。_score 的评分越高,相关性越高。查询语句会为每个文档生成一个 _score 字段用以表示相关性,默认按降序排序。ES早期版本使用的算法是:检索词频率/反向文档频率(即:TF/IDF算法),ES5.0以后使用的算法变成了BM25算法,是TF与IDF的乘积。根据不同的查询条件以及查询条件不同的组合方式,每个查询条件经过BM25算法得到的值会再经过不同的运算最终得到 _score相关性评分。其中:

       TF:Term Frequency,TF = (freq * (k1 + 1)) / (freq + k1 * (1 - b + b * fieldLength / avgFieldLength)),其中:

              freq: 某个词元在已匹配的某个文档的某个字段上出现的次数;

              k1:系统常量,取值范围为0~3之间,理想范围是0.5~2.0。用来控制匹配到的词元数对TF的影响程度。k1值小,匹配到词元数对TF的影响也就小,ES中默认为1.2;

              b:系统常量,取值范围为0~1之间,理想范围是0.3~0.9。用来控制字段长度fieldLength对score的影响程度。b=0时fieldLength对score无影响,b=1时fieldLength对score达到最大影响。ES 中默认为0.75;

              fieldLength:已匹配的某个文档的某个字段上的词元总数;

              avgFieldLength:已匹配的某个文档所在分片上的所有已匹配的文档的某字段上的平均词元数;

       IDF:IDF = log(1 + (docCount - docFreq + 0.5) / (docFreq + 0.5)),其中:

               docCount:已匹配的某个文档所在分片上的所有文档总数;

               docFreq:已匹配的某个文档所在分片上的已匹配的文档总数;

三、常用API:

       1、  查看相关性得分的计算明细:

GET http://$user:$passwd@$host:$port/$index/$type/_search
{
    "explain": true,
    "query":{
        查询条件
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Elasticsearch使用相关性评分来衡量查询结果与搜索查询的匹配程度。其中,两个主要的评分算法是TF-IDF和BM25。 TF-IDF(词频-逆文档频率)是一种传统的评分算法,它考虑了词项在文档中的频率和在整个文集中的重要性。它通过计算词项在文档中的出现频率(TF)和在文集中的逆文档频率(IDF),来决定一个词项的相关性得分TF-IDF评分越高,表示词项在文档中的出现频率越高且在整个文集中的重要性越大。 BM25是一种更先进的评分算法,它综合考虑了词项频率、文档长度和文档频率等因素。BM25对于常见词项的匹配较为慎重,但在罕见词项的匹配上具有更好的效果。相对于TF-IDF,BM25更适用于大型的文档集合和长文档。 在Elasticsearch中,影响相关性评分的因素包括: - 词项频率(Term Frequency,TF):词项在文档中的出现频率越高,相关性评分越高。 - 逆文档频率(Inverse Document Frequency,IDF):衡量词项的重要性,常见词项的IDF较低,罕见词项的IDF较高。 - 文档长度(Field Length):较长的文档可能会被降低相关性评分,以避免长文档在相关性上的优势。 - 文档频率(Document Frequency,DF):词项在文档集合中的出现频率越高,相关性评分越低。 综上所述,Elasticsearch使用TF-IDF和BM25等评分算法来衡量查询结果与搜索查询的相关性评分算法会考虑词项频率、逆文档频率、文档长度和文档频率等因素,并根据这些因素为每个查询结果分配一个相关性得分。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [【ElasticsearchElasticsearch自定义评分的N种方法](https://blog.csdn.net/qq_21383435/article/details/116569606)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值