加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > Apache > 正文

理解APACHE SOLR默认的评分机制

发布时间:2020-12-13 19:25:15 所属栏目:Apache 来源:网络整理
导读:《理解APACHE SOLR默认的评分机制》要点: 本文介绍了理解APACHE SOLR默认的评分机制,希望对您有用。如果有疑问,可以联系我们。 Apache Solr是基于Apache Lucene的企业级开源平台.希望通过本文你能了解Solr/Lucene的默认评分机制,以及哪些因子会影响搜索结

《理解APACHE SOLR默认的评分机制》要点:
本文介绍了理解APACHE SOLR默认的评分机制,希望对您有用。如果有疑问,可以联系我们。

Apache Solr是基于Apache Lucene的企业级开源平台.希望通过本文你能了解Solr/Lucene的默认评分机制,以及哪些因子会影响搜索结果的排序.

首先看一下Lucene的评分公式,

理解APACHE SOLR默认的评分机制

以下是对公式中各个因子的详细解释

1. tf(t in d) 关联词出现的频率,词频率是指搜索词t 在文档d 中出现的次数.文档中搜索词出现次数越多总评分也就越高.tf(t in d)默认的实现是:

理解APACHE SOLR默认的评分机制

2. idf(t) 关联到反转文档频率,文档频率(docFreq)指出现过词 t的文档数量.docFreq 越少 idf 就越高(物以稀为贵).idf(t)不只要反映词t在文档中的反转频率,还要反映词t在所有搜索词中的反转频率,所以你会在评分公式中看到idf(t)有个平方.idf(t)默认的实现是:

理解APACHE SOLR默认的评分机制

3. coord(q,d)评分因子,是基于文档中出现查询词的个数.越多的查询词在一个文档中,说明些文档的匹配程序越高.默认是出现查询项的百分比.

4. queryNorm(q)一个标准的查询因子,使不同查询之间可以比拟.此因子不影响文档的排序,因为所有有文档都会使用此因子.queryNorm(q)默认的实现是:

理解APACHE SOLR默认的评分机制

每个查询项权重的平分方和(sumOfSquaredWeights)由 Weight 类完成.例如 以下是BooleanQuery的计算公式:

理解APACHE SOLR默认的评分机制

5. t.getBoost()查询时,词t的加权值(如:jakarta^4 apache,其中词jakarta的加权值就是4),或者可以在程序中使用 setBoost()办法来给词加权.

6. norm(t,d)封装索引期间的加权和长度因子(如果想忽略该因素,可以在schema.xml中定义字段时加上omitNorms=”true”属性),以下是关于加权和长度因子的解释:

· Field boost – 字段加权,在将字段内容索引到solr文档之前,通过调用 field.setBoost()为字段加权.

· lengthNorm(field) – 由字段中的 Token 的个数来计算此值,字段越短,评分越高.

以上所有因子相乘得出norm值,如果文档中有相同的字段,它们的加权也会相乘:

理解APACHE SOLR默认的评分机制

索引的时候,把 norm 值压缩(encode)成一个 byte 保留在索引中.搜索的时候再把索引中 norm 值解压(decode)成一个 float 值.所以在真正搜索的时候,norm值是无法改变的.

Solr的默认评分算法可以满足大部门业务需求,如果你当前的业务需求非常复杂且默认算法无法满足,你也可以自定义评分算法.

《理解APACHE SOLR默认的评分机制》是否对您有启发,欢迎查看更多与《理解APACHE SOLR默认的评分机制》相关教程,学精学透。编程之家PHP学院为您提供精彩教程。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读