【Lucene】lucene的评分机制

 

测试环境里查询条件1065800714,为什么ScoreDoc.score小于1呢?这个值是怎么算出来的?

输入1065800714*,ScoreDoc.score变成了1

注:在生产环境里大于1而在测试环境里却小于1,生产和测试环境唯一区别是测试环境数据量很小。

ScoreDoc.score——The score of this document for the query.

 

判断文档之间的关系(即文档相关性)

注:查询语句也可以看成是文档,即查询语句与匹配结果文档之间的关系

 

要判断文档之间的关系,首先得找出哪些词(Term)对文档之间的关系最重要,然后判断这些词之间的关系

从而得到文档相关性。

 

step 1.计算词(Term)的权重(Term Weight)

一个词在某文档中的重要性(即权重)越大,则在计算文档之间相关性中作用更大,影响权重主要有两个要素:

a.  Term Frequency(tf):此term在此document里出现的次数。出现次数越多,tf越大,说明该词越重要。

 

b. Document Frequency(df):多少document包含该term。数目越少,df越小(idf越大),说明该词越重要。

 

step 2.向量空间模型算法(Vector Space Model)计算文档之间的相关性。

 

 

fieldWeight是什么?

 

 

IndexSearcher中与打分有关的方法

 

 

我的需求:只关心查询的term是否存在,对于hit result的score,term的文档频率(df)不影响score。

即计算一个term的权重,根据该term占一个document的tf来计算,忽略上面step 1的b因素。

 

参考:

http://lucene.apache.org/core/old_versioned_docs/versions/3_4_0/scoring.html

http://lucene.apache.org/core/old_versioned_docs/versions/3_4_0/api/core/org/apache/lucene/search/package-summary.html#changingSimilarity

http://www.gossamer-threads.com/lists/lucene/java-user/39125#39125

http://www.gossamer-threads.com/lists/lucene/java-user/38967#38967

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值