索引时,搜索时可能影响术语得分的因素有哪些

Mon*_*oon 4 lucene scoring

问题很少令人困惑.我是Lucene的新手并经历了这些文件.我发现adding boost to a field,增加了字段的范数,从而在搜索时增加了该字词的分数.

IE在索引时将字段添加到字段会影响搜索时的分数.我的问题是除了提升之外,还有其他方法可以做同样的事情吗?请指教.

pha*_*ani 5

在Lucene 4.x之前,曾经有一个基于向量空间模型的评分公式.

以下是有助于Lucene得分的因素.

1)Tf:术语频率,即文档中术语的频率.

2)Idf:反向文档频率:日志(收集大小/有术语的文档数)"此公式可能有所不同.

3)Field Boost:你提到的那个.它是在索引时提供的.

4)Coord:基于在指定文档中找到多少查询词的分数因子.

5)queryNorm(q)是一个归一化因子,用于使查询之间的分数相当.此因素不会影响文档排名(因为所有排名的文档都乘以相同的因子),而只是尝试从不同的查询(甚至不同的索引)中得分

6)norm(t,d)封装了一些(索引时间)增强和长度因子:

a)文档提升 - 通过在将文档添加到索引之前调用doc.setBoost()来设置.

b)字段提升 - 通过在将字段添加到文档之前调用field.setBoost()来设置.

c)lengthNorm - 根据文档中此字段的标记数将文档添加到索引时计算,以便较短的字段对分数贡献更多.LengthNorm由索引时生效的Similarity类计算.

7)术语提升:是查询q中术语t的搜索时间提升

有关Lucene默认评分公式的深入了解:请查看文档:Lucene Similarity

随着Lucene 4.x的新版本,新的评分公式已经被引入,如BM25.有关更多详细信息,请查看Lucene 4.2 Similarity的子类

您可以实现Similarity的子类来自定义上述所有评分因子.这是一个例子......