编写自定义的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 文档收集器相关推荐

  1. 使用Lucene检索文档中的关键字

    使用Lucene检索文档关键字时,具体步骤如下: 1.对文档处理 2.为要处理的文件内容建立索引 3.构建查询对象 4.在索引中查找 使用Lucene检索文档中的关键字实例 文件预处理工具类FileP ...

  2. 安卓学习文档收集汇总

    安卓学习文档收集汇总 https://www.jianshu.com/p/86aed183ce6c?utm_campaign=maleskine&utm_content=note&ut ...

  3. 一款轻巧快速的跨平台文档阅读器

    程序员宝藏库:你想要的,应有尽有! DevWeekly收集整理每周优质开发者内容,包括开源项目.资源工具.技术文章等方面. 每周五定期发布,同步更新到知乎:Jackpop . 欢迎大家投稿,提交iss ...

  4. linux 如何查看终端格式,你应该还不知道,Linux终端下的 Markdown 文档查看器

    原标题:你应该还不知道,Linux终端下的 Markdown 文档查看器 现在,Markdown 差不多已经成为技术文档的标准.它可以实现技术文档的快捷写作,以及输出发布.同样都是标记语言,但Mark ...

  5. 阅读器java_纯Java文档阅读器

    XDocViewer是一个纯Java的文档阅读器组件,可以方便的集成到Java应用中(也可以集成到Web应用中),它有如下特点: 1.免费 2.支持的文档格式丰富:MS Office文档(doc.do ...

  6. Oracle Primavera Unifier文档管理器(Document Manager)

    目录 引言 介绍 引言 在 Oracle Primavera Unifier 中,文档管理器维护项目的所有文件和文档.每个项目/外壳都包含自己的文档管理器,另一个文档管理器驻留在公司级别.管理员确保员 ...

  7. Android文档管理器

    文章目录 一.前言 二.AndroidManifest.xml 三.核心权限申请 四.使用方式 五.拓展资料 五.参考链接 一.前言 在Android低版本使用存储功能的时候,仅需要在AndroidM ...

  8. 在线文档查看器:Gleamtech Document Viewer 6.6.1

    DocumentUltimate Document Viewer and Converter for ASP.NET Core, MVC 和 WebForms 查看几乎任何文档类型(70 多种文件格式 ...

  9. Python实现Excel表格图片下载-腾讯文档收集表下载Excel表格后下载图片

    代码目的 QQ腾讯文档收集表下载本地后变成Excel表格,可是腾讯文档内的图片变成了链接,为了不手动保存图片,所以写出以下代码来实现自动保存图片. 代码原理 准备工作: python编译器 pytho ...

最新文章

  1. 经典图书《重构:改善既有代码的设计》图灵再版出版倒计时
  2. uva140 Bandwidth
  3. 教你使用TensorFlow2判断细胞图像是否感染
  4. JavaScript高级day02-PM【原型链的属性问题、探索instanceof、原型面试题】
  5. JAVA中的变量和常量
  6. 51单片机mysql_51单片机的定时器
  7. oracle集群监听启动,在RAC中lsnrctl和srvctl操作监听区别
  8. 领域应用 | 机器知道哪吒是部电影吗?解读阿里巴巴概念图谱AliCG
  9. 可编辑PSD分层疫情防护宣传海报
  10. BestCoder4 1002 Miaomiao's Geometry (hdu 4932) 解题报告
  11. 【转】性能测试设计和LR原理的探讨
  12. java大数据在线考试系统在线阅卷系统及大数据统计分析计算机毕业设计MyBatis+系统+LW文档+源码+调试部署
  13. CSS系列教程----摘自洪恩网站
  14. 腾讯会议 .wemta 文件如何转码成 mp4 文件
  15. 如何 自定义starter?
  16. maven-surefire-plugin常用配置
  17. 在不同领域,大家用爬虫怎么盈利的-Java网络爬虫系统性学习与实战系列(4)
  18. [架构之路-61]:目标系统 - 平台软件 - 基础中间件 - 远程过程(函数)调用RPC原理与其网络架构
  19. rundown of the Objective-C Type Encodings
  20. for循环的学习心得

热门文章

  1. python如何读取tfrecord_tensorflow读取tfrecords格式文件
  2. 后端获取的文本换行_前台带换行符的文本提交到后台,后台在前台显示换行
  3. android 手机铃声设置铃声设置,Android 修改系统来电铃声
  4. php 5范例代码查询辞典 pdf,PHP 5范例代码查询辞典
  5. 怎么查看WordPress主题HTML,几个WordPress 主题在线检测工具
  6. numpy.random 模块- 随机数
  7. 系统吞吐量评估方法 冯凌圣
  8. 数据库笔记04:数据库设计
  9. 【codevs2516】【BZOJ2461】符环,DP
  10. 愤怒的小鸟4只编外鸟_丽萨荐书 愤怒的小鸟 Angry Birds ICR #1