【第22期】观点:IT 行业加班,到底有没有价值?

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 Collector使用例子

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

Lucene 3.3 Collector返回所有结果

我用的是Lucene 3.3 , IndexSearcher 搜索接口有很多, 但大多都必须指定返回结果的数量,因而都不能返回所有搜索结果。 从其javadoc中可看出,要想返回所有结果的只有一个...

程序员升职加薪指南!还缺一个“证”!

CSDN出品,立即查看!

Lucene根据字段进行自定义搜索扩展

最近需要对公司的产品搜索功能做一步改动,搜索到的结果首先按照是否有库存进行排序,然后再按照销量。由于库存量也是一个整数,如果直接按照库存量进行倒序排序的话,是不符合要求的,Lucene也没有支持我们这...

lucene 6.0 常用类与方法

常用类简介 Directory 指定索引所在目录 FSDirectory 存放于磁盘上的文件系统 RAMDirectory 存放于内存中的目录,用于测试等用途 如Directory directory...

lucene 文档评分 及 CustomScoreQuery

1.评分 2.解释 org.apache.lucene.search.Explanation 类,用于解释评分细节。 String org.apache.lucene.search.Explana...

Lucene 实例教程(一)初识Lucene

一、Lucene的介绍      Lucene是一个全文检索的框架,apache组织提供了一个用java实现的全文搜索引擎的开源项目,其功能非常的强大,api非常简单,并且有了全文检索的功能支持可以非...

Lucene 6.0 配置(一)

最近在学习lucene,目前apache已经更新到6.1.0的版本,网上的大多数教程配置有些问题,故自己重配了下.       参考 作者:永恒の_☆ 地址:http://blog.csdn.net/...

【lucene】 field->term的分析过程

1.简述 分析(analysis),在lucene中指的是将域(Field)转换成最基本的索引表示单元——项(Term)的过程。项的值称为语汇单元(token)。 对于英文来说,这个过程历经了提取单词...

Lucene 6.0下使用IK分词器

Lucene 6.0使用IK分词器需要修改修改IKAnalyzer和IKTokenizer. 使用时先新建一个MyIKTokenizer类,一个MyIkAnalyzer类:MyIKTokenizer...
  • napoay
  • napoay
  • 2016-07-14 18:34
  • 4155
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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