`
liulanghan110
  • 浏览: 1072457 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

lucene多条件查询

阅读更多
  /**
     * 多条件查询
     *
     * @param termQueryList
     * @return
     */
    public List<Document> complexSearch() {
        List<Document> docList = new ArrayList<Document>();
        try {
            directory = FSDirectory.open(new File(LuceneConstant.INDEX_PATH));//打开索引文件夹  
            IndexReader reader = DirectoryReader.open(directory);//读取目录  
            IndexSearcher search = new IndexSearcher(reader);//初始化查询组件  

            BooleanQuery query = new BooleanQuery();;
         query.add(new PrefixQuery(new Term("pinYin", letter)),BooleanClause.Occur.MUST);
         query.add(NumericRangeQuery.newDoubleRange("price",minPrice,maxPrice,true, false),BooleanClause.Occur.MUST);
         query.add(new TermQuery(new Term("name", name)),BooleanClause.Occur.MUST);
            TopDocs td = search.search(query, 10000);//获取匹配上元素的一个docid  
            for (ScoreDoc doc : td.scoreDocs) {
                docList.add(search.doc(doc.doc));
            }
            reader.close();//关闭资源  
            directory.close();//关闭连接  
        } catch (Exception e) {
            e.printStackTrace();
        }
        return docList;
    }

上面的例子给出了,前导模糊查询和范围查询普通查询的组合,BooleanClause.Occur.MUST,表示他们是与的关系

MUST, SHOULD, MUST_NOT 与 或 非

 

比如像这样更复杂的嵌套也是可以的。

(a = 1 or a = 2) and (b = 3 or b = 4) or (c <> 5 and c = 6)

实现方式就是在BooleanQuery中嵌套BooleanQuery

 

分享到:
评论

相关推荐

    lucene 多字段查询+文字高亮显示

    本话题聚焦于“Lucene多字段查询”和“文字高亮显示”,这两个特性在信息检索和数据挖掘中具有广泛应用。 首先,让我们深入理解“Lucene多字段查询”。在信息检索系统中,用户可能希望根据多个字段来过滤和排序结果...

    Lucene3.0之查询类型详解

    - **BooleanQuery**:用于组合多个查询条件,支持AND、OR、NOT等布尔运算。通过添加多个TermQuery或其他Query子类实例到BooleanQuery来构建复杂的逻辑查询。 举例来说,以下是如何创建一个"星期一"和"五月一日"的...

    lucene创建修改删除组合条件查询

    在本主题中,我们将深入探讨如何使用Lucene进行创建、删除、修改和组合条件查询,以及如何实现类似MySQL中的LIKE、IN、OR和时间范围条件查询。 首先,**创建索引**是使用Lucene的第一步。创建索引涉及到读取数据源...

    lucene表达式处理查询

    在Lucene中,表达式查询是一种高级查询方式,允许用户通过特定的语法构造复杂的查询条件。本篇文章将深入探讨Lucene表达式处理查询的原理、语法及示例。 ### 1. Lucene表达式查询基础 Lucene表达式查询是基于...

    Lucene时间区间搜索

    分词是为了让Lucene能够理解时间值,并将其与查询条件进行比较。 时间区间查询的关键在于构建正确的Query对象。Lucene支持多种查询类型,例如TermQuery、PrefixQuery、RangeQuery等。在时间区间搜索中,我们通常会...

    lucene的查询语法事例

    **Lucene查询语法详解** Apache Lucene是一款高性能、全文本搜索库,被广泛应用于各种搜索引擎的构建。在使用Lucene进行信息检索时,理解和掌握其查询语法至关重要。本篇文章将深入探讨Lucene的查询语法,帮助你更...

    Lucene分词与查询详解

    **Lucene分词与查询详解** Lucene是一个高性能、全文本搜索库,广泛应用于各种搜索引擎的开发中。它提供了一套强大的API,用于索引文本数据,并执行复杂的查询操作。在深入理解Lucene的分词与查询机制之前,我们...

    Lucene 使用正则表达式

    在Lucene中,可以通过`regexQuery`来利用正则表达式进行复杂条件的匹配,从而实现更精确的搜索需求。 #### regexQuery详解 `regexQuery`是Lucene提供的一个用于执行正则表达式查询的方法。它接受一个`Term`对象作为...

    lucene facet查询示例

    **Lucene Facet查询详解** ...通过区间查询和多维度查询,用户可以根据各种条件进行筛选,而key-field-value模型则为数据组织提供了清晰的结构。在实际应用中,结合这些知识,我们可以构建出更符合用户需求的搜索系统。

    lucene实现企业产品检索

    Lucene提供了多种查询类型,如TermQuery、PhraseQuery、WildcardQuery等,可以根据需求选择合适的查询方式。接着,使用`IndexSearcher`执行查询,并通过`TopDocs`获取排名最高的搜索结果。 **4. 高级搜索特性** ...

    lucene实例lucene实例

    5. 查询(Query):用户提交的搜索条件,可以是简单的关键词,也可以是复杂的查询语法。 二、Lucene实例操作流程 1. 创建索引(Indexing):首先,我们需要创建一个索引Writer,然后添加文档到索引中。每个文档...

    lucene引擎和sqlite数据库分词查询

    查询时,系统可以根据用户的查询条件,利用Lucene进行分词查询,并返回结果。同时,系统还可以后台实时统计单词频率,更新重点单词列表。对于重点句子的识别,可以分析每个文档中包含重点词的句子,根据上下文相关性...

    lucene高级智能查询小案例

    例如,我们可以使用TermQuery来查找特定关键词,使用BooleanQuery组合多个条件,或者使用WildcardQuery进行通配符查询。在高级查询中,我们可能会利用FuzzyQuery进行模糊匹配,或者使用PrefixQuery进行前缀搜索,...

    lucene分组查询优化facet

    它首先会计算每个分面值的文档频率,然后对匹配查询条件的文档进行分组计数。这个过程涉及到倒排索引的遍历和统计,因此在处理大量数据时可能会消耗较多资源。 二、优化策略 1. **缓存优化**:Lucene提供了一些缓存...

    基于lucene3.0 书籍查询系统

    **基于Lucene 3.0的书籍查询系统详解** Lucene是一个开源的全文搜索引擎库,由Apache软件基金会开发。在3.0版本中,Lucene提供了强大的文本分析、索引和搜索功能,使得开发者能够快速地构建自己的全文检索应用。本...

    lucene部分常用代码

    本文将对Lucene部分常用代码进行详细解释,包括多字段搜索、多条件搜索、过滤等。 多字段搜索 在Lucene中,我们可以使用MultifieldQueryParser来指定多个搜索字段。MultifieldQueryParser可以将多个字段合并到一个...

    我封装的搜索引擎之lucene篇

    4. **查询解析**:如何使用Lucene解析用户输入的查询字符串,并转化为可执行的搜索条件。 5. **结果处理**:如何获取和展示搜索结果,可能包括排序、过滤和高亮显示相关匹配内容。 6. **Java编程实践**:展示了如何...

    Lucene.Net +盘古分词 搜索引擎

    - **多字段搜索**:允许用户在多个字段中同时进行搜索,提高查询的灵活性。 在实际应用中,可能还需要考虑如何处理停用词、同义词、词形还原等问题,以提升搜索质量。此外,定期重建索引和优化索引结构也是保持搜索...

    Lucene.net建立索引,检索分页Demo

    - 多线程:在多核处理器上,可以使用多个线程并行构建或搜索索引,提升效率。 6. **扩展性** - Filter:可以添加 Filter 对象来进一步筛选搜索结果,例如按时间范围、地理位置等条件过滤。 - 自定义排序:通过...

    Annotated Lucene 中文版 Lucene源码剖析

    查询对象则用于构造用户输入的搜索条件,与索引交互以找到匹配的文档。 在源码层面,Lucene的索引构建涉及Analyzer、Tokenizer、TokenStream和Filter等组件。Analyzer负责将原始文本分割成有意义的单元(词语),...

Global site tag (gtag.js) - Google Analytics