代码改变世界

Lucene的评分(score)

2012-05-09 14:14  yuejianjun  阅读(444)  评论(0编辑  收藏  举报
    在Lucene中score简单说是由 tf * idf * boost * lengthNorm*coord(q,d)计算得出的。 

    tf:是查询的词在文档中出现的次数的平方根 
    idf:表示反转文档频率,观察了一下所有的文档都一样,所以那就没什么用处,不会起什么决定作用。  Term t在几篇文档中出现过 ,对于一个特定的搜索词,该值是一个定值,对所有文档都一样,就不会影响打分。
    boost:激励因子,可以通过setBoost方法设置,需要说明的通过field和doc都可以设置,所设置的值会同时起作用 

    lengthNorm:是由搜索的field的长度决定了,越长文档的分值越低。  lengthNorm(field) = (1.0 / Math.sqrt(numTerms)):一个域中包含的Term总数越多,也即文档越长,此值越小,文档越短,此值越大。

   coord(q,d):一次搜索可能包含多个搜索词,而一篇文档中也可能包含多个搜索词,此项表示,当一篇文档中包含的搜索词越多,则此文档则打分越高。

 

Lucene的打分机制是采用向量空间模型 

    向量相乘=在一条向量上两个向量模相乘

   

http://www.cnblogs.com/forfuture1978/archive/2010/03/07/1680007.html