编写自定义的Colletor,可以对搜索返回的文档实现更精确的控制。
org.apache.lucene.search.Collector 接口。用于聚合原始的搜索结果,实现排序及定制化的过滤。 LeafCollector org.apache.lucene.search.Collector.getLeafCollector(LeafReaderContext context) 接口内的方法。创建一个新的collector 来完成给定上下文的收集。 boolean org.apache.lucene.search.Collector.needsScores() 接口内的方法。标识是否需要计算文档得分。
org.apache.lucene.search.TopDocsCollector
抽象类,声明见下。 public abstract class TopDocsCollector<T extends ScoreDoc> implements Collector {...}PriorityQueue<T> org.apache.lucene.search.TopDocsCollector. pq 字段。这个优先队列盛放top n 的文档。org.apache.lucene.search.TimeLimitingCollector 这个类用于及时停止耗时的搜索。如果慢于设定阀值,当前搜索线程就会因抛出 TimeExceededException异常而停止。 org.apache.lucene.search.TimeLimitingCollector.TimeLimitingCollector(Collector collector, Counter clock, long ticksAllowed) 构造函数。用于对已有的Collector进行包装。
相关资源:lucene collector的使用