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

Lucene 搜索方法(范围搜索)

阅读更多

在某些情况下,用户需要查找一定范围内的文档,比如时间,ID等。

package com.querytype;

import org.apache.lucene.index.Term;
import org.apache.lucene.search.BooleanClause;
import org.apache.lucene.search.Hits;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.RangeQuery;
import org.apache.lucene.search.TermQuery;

public class RangeQueryDemo {

 /**
  * @param args
  */
 public static void main(String[] args) {
  try {
   IndexSearcher search = new IndexSearcher("d://demo");
   Term t1 = new Term("bookname","001");
   Term t2 = new Term("bookname","005");
   
   RangeQuery query = new RangeQuery(t1,t2,false);
   
   
   Hits hits = search.search(query);
   for(int i=0;i<hits.length();i++)
   {
    System.out.println(hits.doc(i));
   }
  } catch (Exception e) {
   e.printStackTrace();
  }

 }

}

首先为QUERY设置一个上届和一个下届,然后设置一个布尔值,布尔值表示,如果为TRUE,那么这两个临界值加入到结果中,如果为FALSE那么就不加到结果中。在RangeQuery判断某个TERM是否在某一范围内时,使用的是STRING的toString方法。

由于该类的rewrite方法将对某个范围内的查询转化为一个由多个TERMQUERY组成的布尔查询,而且每个子查询的条件都为SHOULD,所以查询满足的条件文档较大的时候,性能非常的低。

如果你设置的查询的范围超过了1024,那么就会抛出异常,TooManyClause就是由于地层采用的是BooleanQuery来查询。

分享到:
评论

相关推荐

    Lucene时间区间搜索

    在上面的代码中,`DateTools.DateToString`方法将DateTime对象转换为Lucene可理解的字符串格式,然后创建了一个包含这两个时间点的闭合范围查询。这里的“true”参数表示边界是包含的。 接下来,我们需要将这个...

    Lucene 搜索方法(布尔搜索)

    标题"Lucene 搜索方法(布尔搜索)"指出了我们要讨论的是在Lucene中如何使用布尔查询进行文本检索。Lucene是一个高性能、全文本搜索库,它提供了强大的信息检索功能,而布尔搜索是其中一种常用且灵活的搜索方式,...

    Lucene全文搜索_LuceneJava全文搜索_

    在"Lucene全文搜索_LuceneJava全文搜索_"这个主题中,我们将深入探讨Lucene如何在Java环境中实现高效的全文搜索引擎。首先,Lucene的核心概念包括文档(Document)、字段(Field)、索引(Index)和搜索(Search)。...

    lucene3.6 搜索例子

    1. 查询构造:Lucene支持多种查询语法,如布尔查询、短语查询、范围查询等。通过QueryParser,我们可以根据用户输入的关键词生成对应的查询对象。 2. 查询执行:使用IndexSearcher类执行查询。IndexSearcher会遍历...

    利用Lucene 实现高级搜索

    ### 利用Lucene实现高级搜索的关键知识点 #### Lucene简介 ...总之,Lucene提供了丰富的搜索功能,包括布尔操作符、域搜索、通配符搜索、模糊查询和范围搜索,使开发者能够根据具体需求定制高级搜索应用。

    lucene 实现类似百度搜索

    **Lucene 搜索引擎实现详解** Lucene 是一个开源全文搜索引擎库,由 Apache 软件基金会维护。它提供了一套强大的数据结构和算法,用于高效地存储和检索大量文本数据。通过 Lucene,开发者可以轻松地在自己的应用...

    开发自己的搜索引擎 lucene + heritrix

    理解Lucene和Heritrix的工作原理和使用方法,以及如何将两者结合构建有效的搜索引擎,对于完成这项工作至关重要。同时,针对垂直领域的深入理解与合理设计也是构建出有商业价值的搜索引擎的重要前提。

    ssh+lucene搜索实例

    在这个"ssh+lucene搜索实例"中,我们可以理解为结合了SSH和Lucene两个技术,以实现远程服务器上的全文检索功能。例如,可能有一个需求是在多个远程服务器上存储大量数据,而这些数据需要通过关键词进行快速搜索。在...

    基于Lucene的搜索引擎

    3. **查询解析**:用户输入的查询字符串被解析成一系列的查询项,Lucene提供多种查询语法,如布尔运算符(AND, OR, NOT)、短语查询、范围查询等。 4. **评分机制**:Lucene使用TF-IDF(Term Frequency-Inverse ...

    Lucene示例 BM25相似度计算

    在IT领域,搜索引擎技术是至关重要的,而Lucene作为一个开源全文搜索引擎库,广泛应用于各种文本检索系统中。本文将深入探讨Lucene示例中的BM25相似度计算,旨在帮助初学者理解如何利用Lucene 4.7.1版本构建索引、...

    lucene搜索引擎配置详解

    本文将深入探讨Lucene搜索引擎的配置过程,包括文件加载、索引创建和搜索操作,帮助你理解其核心技术。 ### 文件加载 在Lucene中,首先需要将待搜索的数据加载到内存或磁盘上的某个结构中。这通常涉及到读取各种...

    lucene全局搜索所需jar包

    - 全局搜索意味着搜索范围覆盖整个数据库或应用,不论数据量多大,Lucene 都能提供快速的响应。 - 实现全局搜索,需要将所有待搜索的数据都导入到 Lucene 的索引中,然后通过 QueryParser 创建查询,使用 Searcher...

    [Lucene搜索引擎开发权威经典].zip

    《Lucene搜索引擎开发权威经典》是一本深入探讨Apache Lucene的专著,作者于天恩在书中详尽地阐述了Lucene的核心概念、工作原理以及实际应用。这本书旨在帮助读者理解如何利用Lucene构建高性能、可扩展的全文搜索...

    Lucene 实时搜索视频详解

    3. **查询语法**:深入学习 Lucene 的查询语言,包括布尔运算符、短语匹配和范围查询。 4. **性能优化**:探讨如何提升搜索速度,包括内存管理、缓存策略和段合并策略。 5. **实战应用**:通过实例演示如何将 Lucene...

    经典的lucene实例代码及详细解析以及lucene结构流程介绍

    在Lucene搜索中,我们需要指定查询语句、搜索范围和过滤条件。Lucene将根据查询语句生成查询树,然后使用查询树搜索索引,最后返回搜索结果。 Lucene优化 Lucene优化是指对Lucene索引和搜索进行优化的过程。Lucene...

    一个基于LUCENE搜索引擎项目例子

    Lucene支持多种查询类型,如布尔查询、短语查询、范围查询等,可以根据需求灵活运用。 搜索结果的排序是另一个重要环节。Lucene默认使用TF-IDF(词频-逆文档频率)算法进行相关性评分,但你可以根据业务需求定制...

    用 Lucene 加速 Web 搜索应用程序的开发

    3. **查询解析与执行:** Lucene支持复杂的查询语法,包括布尔查询、短语查询、范围查询等。学习如何解析用户输入的查询并转化为Lucene查询对象,以及如何使用Searcher执行查询。 4. **结果排序与优化:** Lucene...

    精通ajax+lucene做搜索引擎

    ### 精通Ajax+Lucene构建搜索引擎 #### Ajax与Lucene概述 本文旨在深入探讨如何结合Ajax与Lucene技术构建高效、响应迅速的搜索引擎。首先,我们需要理解Ajax与Lucene各自的技术特点及其应用场景。 **Ajax...

    基于Lucene的桌面搜索软件

    3. **高级过滤**:支持多种过滤条件,如文件类型、大小、修改日期等,帮助用户进一步缩小搜索范围。 4. **实时更新**:当文件系统发生变化时(如新增、删除或修改文件),自动更新索引库,确保搜索结果的准确性和...

Global site tag (gtag.js) - Google Analytics