Project2--Lucene的Ranking机制浅析

1. 原理

 

首先,Lucene采用了空间向量模型(VSM)来进行检索。

其次,Lucene的打分机制是根据以下公式:

 

score(q,d)=coord(q,d)xqueryNorm(q)x∑(tf (t ind )xidf(t)2 xt.getBoost()xnorm(t,d)))

 

其中coord表示一篇文档所包含的搜索词越多,此文档的分数越高;

queryNorm计算每个查询条目的方差和,其结果对排序没有影响

 

2. 如何计算各个部分的值

 

a. tf和idf

tf表示某个term在文档中出现的词频,idf表示term在几个文档中出现过

在DefaultSimilarity类中

由此返回tf值

由此得到idf值

b. queryNorm

其计算公式为

 

3. 计算分数过程(Score)

在VSM中,向量之间的夹角被用来衡量查询词和文档之间的相似度,在lucene中向量的点乘积被称作Weight

即weight=tf × idf

Weight在Lucene中是一个抽象类,在抽象类Query中具有一个以Searcher为参数的函数weight,返回Weight

在Query的子类TermQuery中有继承与Weight的内部类TermWeight

在该类中通过一系列计算,最终通过normalize函数得到value值

最终的得分在TermScore类中取得

在它的构造函数中初始化上述数组得到具体分数,代码如下:

 

4. 总结

 

Lucene的打分机制大致上就是以上这些,具体的细节请参考

http://topic.csdn.net/u/20100308/21/3386acef-d853-4738-9941-2a8b0ee157ca.html 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值