改进lucene的打分算法

这个是从别人的文章转过来的,记录一下,做全网搜索的时候可能会有用

 

  1. Lucene基础排序算法:

score_d = sum_t(tf_q * idf_t / norm_q * tf_d * idf_t / norm_dt_t)

score_d: Document(d) 的得分

sum_t: Term(t) 的总和

tf_q: 查询中 t 的频度的平方根

tf_q: d 中 t 的频度的平方根

idf_t: log(numDocs/docFreq_t + 1) + 1.

0numDocs: 索引中Document的数量

docFreq_t: 包含t的Document的数量

norm_q: sqrt(sum_t((tf_q*idf_t)^2))norm_d_t: 在与 t 相同域的 d 中 tokens 数量的平方根

  • 基础排序算法的不足要点 : 查询词在一个 Document 中的位置并不重要。 如果一个 Document 中含有该查询词的次数越多,该得分越高。 一个命中document中,如果除了该查询词之外,其他的词越多,该得分越少。
  • 不足:  查询精确度不好。 没有体现网页的重要性。 

  1. Lucene的得分算法, 不适合网页搜索。改进的算法: 

 

Score_d = k1 * OldScore + k2 * PrScore + k3 * ReScore + k4 * homePageScore 

 

Score_d: 记录d的得分。 

 

OldScore: 由基础排序算法计算出的记录d的得分。 

 

PrScore: 记录d的PageRank的得分。 

 

ReScore: 记录d的二次检索的加分, ReScore = rescore + (hitNum - 1) * increment 

 

homePageScore: 主页的加分 

 

K1, K2, K3, K4为权重系数 PR(A) = (1 - d) + d(PR(1) / C(1) + ... + PR(n)/C(n)) 

 

PageRank, 二次检索, 以及主页加分的调整确实优化了查询精确度。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值