我正在尝试在Lucene中实现一种与tf-idf无关的自定义评分公式(因此仅更改相似度将不起作用)。
为了做到这一点,我需要能够针对索引中存储的每个文档生成得分-而不仅仅是匹配查询术语的文档(因为我的评分涉及检查本质上是同义词的内容,因此即使文档没有确切的术语,它仍然可以产生积极的分数)。最好的方法是创建一个IndexReader并调用Document d = reader.doc(i)
以获取所有文档的信息(如此处所述here),然后即时生成分数。
我一直在查看Lucene的评分内部,特别是各种Scorer和Collector类,很明显发生的事情(对于Lucene 3.2)是Weight提供一个Scorer,它与Collector一起循环遍历所有与查询匹配的文档。我是否可以以某种方式利用此结构,但再次获得自定义Scorer实现以考虑所有文档?