当前位置: 首页 >> 应用软件 >> 网络相关 >> Luence排序评分算法
 

Luence排序评分算法

作者:      来源:http://blog.csdn.net/xfans12000     发表时间:2007-03-05     浏览次数:      字号:    

这个主要对lucene的评分公式里面的各个参数做一个详细的解释。其他的可参照

1.  http://book.csdn.net/bookfiles/28/10028814.shtml

2.  http://blog.csdn.net/wawaboss/archive/2006/12/31/1471565.aspx

score(q,d)= coord(q,d)* queryNorm(q)*

( tf(t in d)  ·  idf(t)2  ·  t.getBoost() ·  norm(t,d) )

t in q

 

 

  1. tf(t in d) 表示的是查询条件中,每个(t:term)在本文档(d)中的出现频率。查询关键词出现的频率越高,文档的得分就越高。这个部分的默认计算公式是: 

 

tf(t in d)   =  

frequency½

 

  1. idf(t) 表示的是反转文档频率( Inverse Document Frequency).这个函数表示的是(t:term)在所有文档中一共在多少个文档中出现过。因为文档出现的次数越少就越容易定位,所以文档数越少,得分就越高。这个函数的默认计算公式如下:

idf(t)  =  

1 + log (

numDocs

–––––––––

docFreq+1

)

 

  1. boost(t.field in d)表示文档得分,它包括

Document boost – 文档的boost,是建索引的时候设置的文档得分。

Field boost – 在将一个字段加入到文档中去的时候加入的字段得分。(不同的字段得分不同有利于排序,例如标题的得分应该比内容的得分要高等)

boost(t.field in d)=doc.getboost* 

f.getBoost()

field f in d named as t

 

 

 

  1. lengthNorm(field) 文档在建立索引的时候加入的一个参数,根据文档的某个字段含有的Term数量来计算的。Term数量比较少的字段将得到更多的得分。这个函数是由Similarity类在建立索引的时候计算的。(1/numTerms*numTerms
  2. coord(q,d) 这个函数表示的是在这个文档(d)中Termt)出现的百分比,也就是文档中出现的不同Term数量和查询条件(q)中的不同Termt)的数量之比。所以,文档中出现的Term种类越多,分值就高。
  3. queryNorm(q) 这个函数是一个调节因子,不影响具体的排序情况。主要是用来让排序结果在不同的查询条件(或者不同的索引)之间可以比较。这个条件是在搜索的时候计算的。它的计算公式如下:

queryNorm(q)   =   queryNorm(sumOfSquaredWeights)   =  

1

––––––––––––––

sumOfSquaredWeights½

 

The sum of squared weights (查询条件的terms)是由查询的权重对象计算的。不同的查询方式,有不同的计算方法。例如:Boolean query的计算公式如下:

sumOfSquaredWeights   =   q.getBoost() 2  · 

( idf(t)  ·  t.getBoost() ) 2

 

t in q

 

 

 

 

 

责任编辑 webmaster

 
 
 
 
 
评论更多>>
 
 
 
发表
 
姓名: QQ:
性别: MSN:
E-mail: 主页:
评分: 1 2 3 4 5
评论内容:
验证码:
  
  • 请遵守《互联网电子公告服务管理规定》及中华人民共和国其他各项有关法律法规。
  • 严禁发表危害国家安全、损害国家利益、破坏民族团结、破坏国家宗教政策、破坏社会稳定、侮辱、诽谤、教唆、淫秽等内容的评论 。
  • 用户需对自己在使用本站服务过程中的行为承担法律责任(直接或间接导致的)。
  • 本站管理员有权保留或删除评论内容。
  • 评论内容只代表网友个人观点,与本网站立场无关。
  •