在我们的一个项目中,我们使用旧的Lucene版本(2.3.2)。我现在正在研究当前的Lucene版本(3.5.0)并尝试重新编写旧代码。在旧项目中,我们扩展了TopFieldDocCollector以在collect()方法中执行一些额外的过滤。但是,我对理解新收集器类有点麻烦,但我找不到一个好例子。将Lucene HitCollector(2.x)迁移到收集器(3.x)
1)方法setScorer()。我如何/从哪里获得Scorer对象?
2)方法collect()。我想我需要创建自己的Collection并存储我感兴趣的docIds,对吗?
3)如果不是扩展TopDocsCollector,我需要实现一个PriorityQueue在构造函数中使用,正确吗?它似乎没有标准的实施。但是我仍然需要自己的Collection来存储docIds(或者说ScoreDocs),并且在搜索完成后调用populateResults?
总体而言,它似乎是延长收藏家是(很多)不是扩展TopDocsCollector更容易,但也许我失去了一些东西。
谢谢。很高兴知道setScorer(),我不理解API文档,并认为我必须自己创建Scorer并将其传入以获取分数。 – 2012-03-26 14:45:10