`

Lucene Filter CachingWrapperFilter

 
阅读更多

IndexSearcher is = new IndexSearcher(Index_Store_Path);			
TermQuery tq = new TermQuery(new Term("bk", "bc"));			
QueryFilter qf = new QueryFilter(tq);
QueryParser qp = new QueryParser("bk", new StandardAnalyzer());
Query q = qp.parse("gh hi");
Hits hits = is.search(q, qf, s);


TermQuery tq = new TermQuery(new Term("bk", "bc"));
QueryFilter qf = new QueryFilter(tq);
			
//此时只对Index 进行了一次访问 , 因为CachingWrapperFilter 能够缓存上一个Filter的结果 从而直接在结果中查找 而普通的则需要访问两次Index
CachingWrapperFilter cwf = new CachingWrapperFilter(qf);			
QueryParser qp = new QueryParser("bk", new StandardAnalyzer());
Query q = qp.parse("gh hi");
Hits hits = is.search(q, cwf);

CachingWrapperFilter 使用WeakHashMap作为Cache,其中key:IndexReader value:BitSet

CachingWrapperFilter的bits方法被调用的时候,会首先检查Cache中是否已经存在上一个Filter的结果,若存在,直接取出后返回,否则执行传入的Filter
 
分享到:
评论

相关推荐

    Lucene5学习之Filter过滤器

    3. CachingWrapperFilter:缓存过滤结果,避免对同一个Filter的重复计算,提高效率。 4. DocsFilter:用于限制搜索结果的数量,如只返回前N个匹配的文档。 在实际应用中,Filter还可以与其他组件结合使用,如Sort...

    Lucene的使用与优化

    ### Lucene的使用与优化 #### 一、Lucene简介 **Lucene** 是一个高性能、全功能的文本搜索引擎库,被广泛应用于各种基于Java的应用程序中,用于提供全文搜索功能。Lucene不仅可以用于构建独立的搜索引擎应用,也...

    lucene,lucene教程,lucene讲解

    lucene,lucene教程,lucene讲解。 为了对文档进行索引,Lucene 提供了五个基础的类 public class IndexWriter org.apache.lucene.index.IndexWriter public abstract class Directory org.apache.lucene.store....

    lucene部分常用代码

    Lucene中的Filter可以对搜索结果进行过滤,从而获得更小范围内更精确的结果。下面是一个示例代码: ```java filter filter = new DateFilter(fielddate, datetime.parse("2005-10-1"), datetime.parse("2005-10-30...

    Lucene3.5源码jar包

    2. **分词器(Tokenizer)与过滤器(Filter)**:Lucene支持自定义的分词规则,如`StandardTokenizer`和`LowerCaseFilter`。这些在`analysis`包下的源码中可以找到,它们负责将原始文本转换为可搜索的术语。 3. **...

    lucene实例lucene实例

    《Lucene实战:深入解析与应用》 Lucene,作为Apache软件基金会的开源全文检索库,是Java领域中广泛使用的搜索引擎框架。它提供了强大的文本分析、索引和搜索功能,被许多大型项目采用,如Elasticsearch、Solr等。...

    Annotated Lucene 中文版 Lucene源码剖析

    在源码层面,Lucene的索引构建涉及Analyzer、Tokenizer、TokenStream和Filter等组件。Analyzer负责将原始文本分割成有意义的单元(词语),Tokenizer起着分词的作用,而TokenStream和Filter则对这些词语进行进一步...

    Lucene时间区间搜索

    为了提高性能,我们还可以考虑使用Filter或者QueryWrapperFilter来提前过滤不符合时间区间的文档,减少不必要的匹配计算。此外,优化Analyzer以适应日期格式,比如使用DateMathParser,可以支持更灵活的时间表达式。...

    lucene3.0 lucene3.0

    lucene3.0 lucene3.0 lucene3.0 lucene3.0 lucene3.0

    lucene-4.7.0全套jar包

    【Lucene 4.7.0 全套JAR包详解】 Lucene是一个开源全文搜索引擎库,由Apache软件基金会开发并维护。它提供了一个高级、灵活的文本搜索API,允许开发者轻松地在应用程序中实现复杂的搜索功能。这次提供的“lucene-...

    Lucene资料大全(包括Lucene_in_Action书等)

    5. **过滤与聚合**:Filter和Collector组件可以用于进一步筛选结果,或者进行分组、统计等聚合操作。 6. **更新与删除**:Lucene支持动态索引更新,可以添加、修改或删除文档,并实时反映在搜索结果中。 7. **多...

    lucene-queries-2.9.0.jar 内含有org.apache.lucene.search.DuplicateFilter

    lucene-queries-2.9.0.jar 内含有org.apache.lucene.search.DuplicateFilter

    lucene in action英文版 lucene 3.30包

    《Lucene in Action》是关于Apache Lucene的权威指南,这本书深入浅出地介绍了全文搜索引擎的构建和优化。Lucene是一个高性能、全文本搜索库,它允许开发人员在应用程序中轻松实现复杂的搜索功能。这本书主要面向...

    lucene-analyzers-common-5.1.0.jar

    * Class SnowballProgram is made abstract and contains new abstract method stem() to avoid reflection in Lucene filter class SnowballFilter. * All use of StringBuffers has been refactored to ...

    Lucene简介.介绍

    【Lucene 简介】 Lucene 是一个强大的开源全文搜索库,由 Java 编写,主要用于为应用程序添加全文检索功能。它不是一个完整的全文搜索引擎应用,而是一个工具包,允许开发者将其集成到自己的软件中,以实现高效、...

    lucene学习lucene学习

    Lucene 是一个强大的全文搜索引擎库,它以 Java 语言实现,并作为 Apache 软件基金会的 Apache Jakarta 项目的一部分开放源代码。Lucene 提供了高效、可扩展的索引和搜索功能,允许开发者轻松地在应用程序中集成高级...

    计算机专业外文翻译(lucene相关)

    "计算机专业外文翻译(lucene相关)" 本文翻译了论文"Scale-up x Scale-out: A Case Study using Nutch/Lucene",介绍了计算机专业领域中关于Lucene相关的知识点。 Scale-up vs Scale-out 论文中讨论了两个相对...

    Lucene的原理完整版pdf

    **Lucene原理详解** Lucene是一个高性能、全文检索库,由Apache软件基金会开发并维护,是Java编程语言中广泛使用的搜索引擎库。它提供了一个简单但功能强大的API,用于索引和搜索文本数据,使得开发者可以轻松地在...

    lucene 2.0 api以及lucene 3.0 api

    **Lucene 2.0 API 和 Lucene 3.0 API 深度解析** Lucene 是一个由 Apache 软件基金会开发的全文搜索引擎库,它为开发者提供了在 Java 应用程序中实现高性能、可扩展的全文搜索功能的能力。Lucene 的 API 设计得相当...

    lucene所有的jar包

    《全面解析Lucene jar包:从基础到应用》 在信息技术高速发展的今天,搜索引擎已经成为我们获取信息不可或缺的工具。在Java领域,Lucene作为一个强大的全文搜索引擎库,深受开发者喜爱。本文将详细介绍“lucene所有...

Global site tag (gtag.js) - Google Analytics