读书人

改善lucene的打分算法

发布时间: 2012-09-28 00:03:35 作者: rapoo

改进lucene的打分算法

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

?

    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中,如果除了该查询词之外,其他的词越多,该得分越少。不足:?查询精确度不好。?没有体现网页的重要性。?
    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,?二次检索,?以及主页加分的调整确实优化了查询精确度。

读书人网 >开源软件

热点推荐