1.简介
分值计算方式为查询语句query中每个项term与文档doc的评分之和。公式表示见1-1。
score(query,doc)=∑term∈queryscore(term,doc)(1-1)
2.term与doc的评分
2.1 基于tf-idf
score(t,d)=tf(t,d)∗idf(t)2∗boost(t,d)∗lengthNorm(t,d)∗coord(q,d)∗queryNorm(q)(2-1)
符号 | 说明 | 备注 |
---|---|---|
t | term | / |
d | doc | / |
q | term 所在query | / |
tf(t,d) | term在doc中的频率 | / |
idf(t) | 1含有term的doc的频率 | / |
boost(t,d) | 域和文档的加权 | 在索引期间设置。可以用该方法对某个域或文档进行静态单独加权 |
lengthNorm(t,d) | 域的归一化值 | 域的归一化(normalization)值,更短的域获得更大的加权。该值在索引期间计算,并保存在索引norm中。 |
coord(q,d) | 协调因子(Coordination factor) | 基于doc与query的term的交集的数量。该因子会对包含更多搜索项的文档进行类似AND 的加权。 |
queryNorm(q) | 查询的归一化值 | 每个term权重的平方和 |
- 此表格来源于《lucene实战(第二版)》,P82.
- tf*idf思想可见《tf*idf 用于文本分类中的特征提取》
2.2 基于BM25
score(t,d)=idf(t)∗(k1+1)∗tf(t,d)k1((1−b)+b∗dlavgdl)+tf(t,d)(2-2)
k1,b为调节因子,根据经验设置,一般取k1=2,b=0.75,dl为文档长度,avgdl为所有文档的平均长度。
时间: 2024-11-13 07:55:35