lucene Collector 文档收集器

原创 2016年05月31日 13:21:19

编写自定义的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进行包装

版权声明:

相关文章推荐

Lucene优化

使用Lucene来开发搜索引擎,一般不会太关注创建索引的效率(异步或定时创建索引),但是,当数据达到一定量级的时候,我们就必须要考虑如何的去提高创建索引的性能,以减少创建索引的时间以及提高查询效率。以...

Lucene底层原理和优化经验分享(2)-Lucene优化经验总结

系统优化遵从木桶原理:一只木桶能盛多少水,并不取决于最高的木板,而取决于最短的那块木板。Lucene优化也一样,找到性能瓶颈,找对解决方法,才能事半功倍,本文将从三方面阐述我们的Lucene优化经验:...

Lucene底层原理和优化经验分享(1)-Lucene简介和索引原理

基于Lucene检索引擎我们开发了自己的全文检索系统,承担起后台PB级、万亿条数据记录的检索工作,这里向大家分享下Lucene底层原理研究和一些优化经验。   从两个方面介绍:   1. Luce...

lucene性能优化以及配置说明

1 lucene简介 1.1 什么是lucene Lucene是一个全文搜索框架,而不是应用产品。因此它并不像www.baidu.com 或者google Desktop那么拿来就能用,它只是提供了一...

终于毕业了

7月13号入职,19号办完所有手续。正式脱离学校了。以后的精力主要会放在工作上面,燃烧起大学时学技术的激情。

redis使用初探

第一部分 安装 首先访问redis.io下载最新稳定版2.2.12,接着按照下面步骤进行操作 0,tar -xvzf redis-2.2.12.tar.gz 1,cd redis-2.2...

关于迷失

本话题将与您共同探讨有关迷失的相关话题。 迷失。什么是迷失?在我看来迷失是一种生活状态,生活在这种状态下的人或许会感觉到非常忙碌但不知究竟为何、为谁而忙;也可能整天闲的发慌,想做点事情又静不下心来,并...

Lucene Collector使用例子

Lucene的Collector是一项高级功能,涉及到搜索过程的详细步骤,通过定制Collector可以改变默认搜索,也可以在此阶段收集命中的文档的信息。 下面用一个例子演示如何自定义Collecto...

aaa

\\pP|\\pS

影响Lucene对文档打分的四种方式

本文转自:http://forfuture1978.iteye.com/blog/591804 在索引阶段设置Document Boost和Field Boost,存储在(.nrm)文件中。 如果...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)