`
baobeituping
  • 浏览: 1068086 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

Lucene从结果中取出数据

阅读更多

有些应用,比如我们首先要搜索一个Person的索引文件,然后通过该索引文件得到和该人对应的客户编码,然后通过客户编码再去查和客户对应的客户信息。

这样要进行两次索引的查找。但是LUCENE提供了一个默认的QueryFilter的实现,他可以从搜索的结果中再次查找。

 

例子:(以上篇文档的索引为例)

public static void main(String[] args) {
  try {

 //首先通过搜素查询0001-0004的结果
   Term begin = new Term("bookNumber", "0001");
   Term end = new Term("bookNumber", "0004");
   RangeQuery q = new RangeQuery(begin, end, true);
   

 //通过将该查询的QUERY放置到 QueryFilter中
   QueryFilter filter = new QueryFilter(q);
   

//再制定
   Term normal = new Term("securitylevel",2+"");
   IndexSearcher searcher = new IndexSearcher("d://demo");
   TermQuery query = new TermQuery(normal);
   
   System.out.println(q.toString());
   Hits hits = searcher.search(query,filter);//制定查询的时候,将过滤器配置进行,这样相当于在0001-0004的结果中找securitylevel=2的结果信息
   for (int i = 0; i < hits.length(); i++) {
    System.out.println(hits.doc(i));
   }
  } catch (Exception e) {
   e.printStackTrace();
  }

 }

分享到:
评论

相关推荐

    lucene讲义 叫你用lucene算法

    每次从堆顶取出最小的Term写入新段,并从原段中移除,然后重新调整堆。这个过程一直持续到所有段都被处理完,形成一个新的、更高效的索引段。 五、查找定位 Lucene的查找算法结合了分级查找和二分查找。首先,在...

    lucene站内搜索

    6. **处理结果**: 取出结果中的Document信息,展示给用户。 ### 四、站内搜索优化 1. **性能优化**: 使用多线程并行索引,或者利用NRT(Near Real Time)特性,实现更快的增量索引。 2. **查询优化**: 使用过滤器...

    深入了解Lucene之四 主要算法介绍.ppt

    总的来说,Lucene的算法设计充分考虑了效率和性能,使得它能够在大规模文本数据中快速准确地进行搜索。通过了解这些核心算法,我们可以更好地优化Lucene的使用,提高信息检索系统的整体效能。对于从事搜索引擎开发或...

    Lucene5学习之多线程创建索引

    一种常见的多线程策略是使用工作队列(如Java的`ExecutorService`),将待索引的文档放入队列,然后由多个工作线程从队列中取出文档,通过`IndexWriter`进行索引。这种方式可以避免线程间的直接竞争,同时利用多核...

    lucene Algorithm

    每次从堆中取出最小的Term写入新段,并删除该Term,然后重新调整堆。这个过程保证了合并后的索引仍然有序,且效率较高。 在查找定位方面,Lucene结合了分级查找和二分查找的优势。对于.tii文件,先在内存中用二分...

    IKanalyzer约2000个常用停止词库

    IKAnalyzer是一款针对中文的...总的来说,IKAnalyzer的停用词库是提高中文文本处理效率的关键工具,它帮助我们从海量数据中抽取出最有价值的信息。正确地使用和维护这个停用词库,将对信息检索系统的性能产生显著影响。

    oracle 全文检索实现

    在检索时,从索引文件取出主键及表名,查询数据库来显示这一条记录的详细信息。 Oracle 全文检索实现的总体架构图由五个部分组成:XML 配置文件、读取器、索引器、索引库和检索器。其中,XML 配置文件存储数据库的...

    使用etcd完成日志内容收集任务的注册发现、日志收集、可视化界面展示.zip

    - 在日志管理系统中,ES被用来存储从Kafka中取出的日志数据。通过建立索引,可以高效地对日志内容进行查询和分析,为故障排查和性能优化提供支持。 4. **Kibana**: - Kibana是Elastic Stack的一部分,提供数据的...

    Elasticsearch最新2021年面试题附答案解析,大汇总.md

    - 目的:根据 Query 阶段得到的结果实际取出数据。 - 过程: - 协调节点根据 Query 阶段得到的全局排序列表,向包含匹配文档的所有分片发送请求。 - 分片收到请求后,将实际的文档内容返回给协调节点。 - 最终...

    Java EE常用框架.xmind

    当用户需要查询的时候,就使用IndexSearcher从索引库中读取数据,找到对应的Document对象,从而解析里边的内容 最后将内容封装到JavaBean对象中 索引库优化 合并文件 采用一种算法,将中英文本...

    JAVA开源关键词提取框架

    总的来说,Java开源关键词提取框架为开发者提供了一种高效、灵活的方式,帮助他们从大量文本数据中抽取出最有价值的信息,对于数据挖掘、信息检索和文本分析等应用场景有着重要的实用价值。通过深入研究和实践这些...

    Java实现LRU缓存的实例详解

    LRU缓存的应用场景非常广泛,例如,在搜索引擎中,Lucene使用LRU缓存来缓存搜索结果,以提高搜索速度。在Web应用中,LRU缓存也可以用于缓存用户的Session信息,以提高应用的性能。 7. LRU缓存的优点 LRU缓存的优点...

    NER-HTML2ES:HTML中的命名实体识别和ElasticSearch

    - NER是自然语言处理的关键技术,用于从文本中抽取出具有特定意义的实体,如人名、地点、日期、组织等。 - Python提供了许多库来实现NER,如spaCy、NLTK、Stanford CoreNLP和Flair等。这些库通常结合深度学习模型...

    message-indexing:RabbitMQ、Solr 和 AES

    3. 消息消费者(如Solr)监听RabbitMQ,当有新消息时,会从队列中取出消息。 4. 消息消费者对消息进行解密,然后解析出需要索引的内容。 5. 使用Solr的API将解析出的数据索引到Solr中。 6. 用户可以通过Solr的查询...

    vigtech-ner:VigTech 应用程序的名称实体识别

    VigTech 应用程序的名称实体识别是一个关键任务,特别是在自然语言处理(NLP)领域,它涉及到从文本中抽取出具有特定意义的实体,如人名、地名、组织名等。在这个项目中,VigTech 使用 Java 作为主要编程语言来实现...

Global site tag (gtag.js) - Google Analytics