lucene Collector 文档收集器

编写自定义的Colletor,可以对搜索返回的文档实现更精确的控制。

1.接口

1.1 Collector

org.apache.lucene.search.Collector
接口。用于聚合原始的搜索结果,实现排序及定制化的过滤。
LeafCollector org.apache.lucene.search.Collector.getLeafCollector(LeafReaderContext context)
接口内的方法。创建一个新的collector 来完成给定上下文的收集。
boolean org.apache.lucene.search.Collector.needsScores()
接口内的方法。标识是否需要计算文档得分。

1.2 LeafCollector

org.apache.lucene.search. LeafCollector
接口。它有collect()与setScorer()两个方法声明。见下面两行。
void org.apache.lucene.search.LeafCollector. collect(int doc) 
重要方法。这个docid是段内的docid,全局的docid=LeafReaderContext.docBase+doc。
void org.apache.lucene.search.LeafCollector. setScorer(Scorer scorer)
设置打分器。

2.抽象类

2.1 TopDocsCollector

org.apache.lucene.search.TopDocsCollector

抽象类,声明见下。
public abstract class TopDocsCollector<T extends ScoreDoc> implements Collector {...}
PriorityQueue<T> org.apache.lucene.search.TopDocsCollector. pq
字段。这个优先队列盛放top n 的文档。

2.2 TopScoreDocCollector

org.apache.lucene.search. TopScoreDocCollector
抽象类,声明见下。内含三个静态类。

public abstract class TopScoreDocCollector extends TopDocsCollector<ScoreDoc> {
	private static class PagingTopScoreDocCollector extends TopScoreDocCollector{...}
	abstract static class ScorerLeafCollector implements LeafCollector {...}
	private static class SimpleTopScoreDocCollector extends TopScoreDocCollector {...}
}

3.设置搜索的超时时间

org.apache.lucene.search.TimeLimitingCollector
这个类用于及时停止耗时的搜索。如果慢于设定阀值,当前搜索线程就会因抛出 TimeExceededException异常而停止。
org.apache.lucene.search.TimeLimitingCollector.TimeLimitingCollector(Collector collector, Counter clock, long ticksAllowed)
构造函数。用于对已有的Collector进行包装

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值