`
橄榄绿
  • 浏览: 277086 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

lucene 多条件查询

阅读更多

多条件查询

 一、不加时间范围

// 组合:生成查询条件
BooleanClause.Occur[] clauses = { BooleanClause.Occur.MUST,BooleanClause.Occur.MUST, BooleanClause.Occur.MUST };
//
根据地区,类型,还有关键字
String[] querys = { "地区", "类型","关键字" };  // 把搜索条件放到数组里

//相对应的索引

String[] fields = { "area", "indId", "key_name" };

// 接收搜索结果——(长度就是结果的数量)
ScoreDoc[] hits = searcher.search(query, searcher.maxDoc()).scoreDocs;

 

二、加时间范围

 BooleanQuery query = new BooleanQuery();

//条件一
QueryParser parser1 = new QueryParser("ex_area",new StandardAnalyzer());
query.add(parser1.parse(sex.getExArea()),BooleanClause.Occur.MUST);
//条件二
QueryParser parser2 = new QueryParser("ex_area",new StandardAnalyzer());
query.add(parser2.parse(sex.getExArea()),BooleanClause.Occur.MUST);
//条件三
QueryParser parser3 = new QueryParser("ex_area",new StandardAnalyzer());
query.add(parser3.parse(sex.getExArea()),BooleanClause.Occur.SHOULD);

//加入时间范围

RangeQuery q = new RangeQuery(new Term("ex_start", String
     .valueOf(sex.getExStart())), new Term("ex_end", String
     .valueOf(sex.getExEnd())), true);
   query.add(q,BooleanClause.Occur.SHOULD);

 

生成检索器

IndexSearcher searcher = new IndexSearcher(FSDirectory
     .getDirectory(new File("c:\\index")));

接收搜索结果——(长度就是结果的数量)
   ScoreDoc[] hits = searcher.search(query, searcher.maxDoc()).scoreDocs;

 

分享到:
评论
1 楼 lliiqiang 2014-07-24  
适当处理把条件放到查询中,有特殊情况确实需要特殊处理

相关推荐

    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的分词与查询机制之前,我们...

    C#调用Lucene方法-实现快速搜索

    接着,构造一个Query对象表示查询条件,最后使用Searcher执行搜索并获取结果。例如: ```csharp using (var reader = DirectoryReader.Open(directory)) using (var searcher = new IndexSearcher(reader)) { ...

    lucene facet查询示例

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

    Lucene 使用正则表达式

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

    lucene实现企业产品检索

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

    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