在我们的一个项目中,我们使用旧的 Lucene 版本 (2.3.2)。我现在正在查看当前的 Lucene 版本 (3.5.0) 并尝试重新编写旧代码。在旧项目中,我们扩展了 TopFieldDocCollector 以在 collect() 方法中做一些额外的过滤。然而,我在理解新的 Collector 类时遇到了一些麻烦,而且我找不到一个很好的例子。
1) 方法 setScorer()。我如何/从哪里获得 Scorer 对象?
2) 方法collect()。我想我需要创建自己的集合并存储我感兴趣的 docIds,对吗?
3)当扩展 TopDocsCollector 时,我需要实现一个 PriorityQueue 以在构造函数中使用,对吗?似乎没有标准的实现。但是我仍然需要我自己的 Collection 来存储 docIds(或者更确切地说,ScoreDocs),并在搜索完成后调用 populateResults?
总的来说,扩展 Collector 似乎比扩展 TopDocsCollector 容易(很多),但也许我遗漏了一些东西。
lucene ×1