`

lucene--搜索工具类

阅读更多

 

搜索

1.创建搜索的索引目录

Directory directory = FSDirectory.open(new File("E:/Lucene/demo"));

2.创建搜索器

IndexSearcher searcher = IndexReader.open(directory);

3.创建搜索条件

Query query = new TermQuery(new Term(field,value)); //索引域field中含有值value的内容

4.执行搜索

TopDocs topDocs = searcher.search(query,count); //根据searcher搜索并返回TopDocs 返回count条

5.根据TopDocs获取ScoreDoc对象数组

ScoreDoc[] scoreDocs = topDocs.scoreDocs;

6.遍历ScoreDoc数组获取Document对象

for (ScoreDoc sd : scoreDocs) {

Document doc = searcher.doc(sd.doc);

String name = doc.get("name");

}

7.关闭IndexSearcher

searcher.close();

 

重难点:

查询条件的选择:

1.精确查询,索引域field=value的内容

Query query = new TermQuery(new Term(field,value));

2.模糊查询字符串,索引域field中以start开始end结尾的内上下区间都包括的内容

Query query = new TermRangeQuery(field, start, end, true, true);

3.模糊查询数值,索引域field中以start开始end结尾的内上下区间都包括的内容

Query query = NumericRangeQuery.newFloatRange(field, min, max, true, true); //newDoubleRange/newIntRange/newLongRange

4.模糊查询以X为前缀的内容,索引域field中以value开头的内容

Query query = new PrefixQuery(new Term(field,value));

5.模糊查询—*通配符查询,索引域field中=*value*的内容,分三种情况,*value/value*/*value*

Query query = new WildcardQuery(new Term(field,value));

6.

 

 

单例的Directory和IndexReader和IndexSearcher

 

private static IndexReader reader;

private static Directory directory;

 

static{

try {

//索引目录

directory = FSDirectory.open(new File("E:/Lucene/demo"));

//读取器

reader = IndexReader.open(directory);

} catch (CorruptIndexException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

}

 

/**

 * 获取查询器

 * @return

 * @author:qiuchen

 */

public static IndexSearcher getSearcher(){

try {

if(reader == null){

reader = IndexReader.open(directory);

}else{

//如果reader发生变化,重新创建

IndexReader ir = IndexReader.openIfChanged(reader);

if(ir != null){

reader.close(); //把原来的reader关闭

reader = ir; //重新给reader赋值

}

}

return new IndexSearcher(reader);

} catch (CorruptIndexException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

return null;

}

 

/**

 * 关闭查询器

 * @author:qiuchen

 */

public static void closeSearch(IndexSearcher searcher){

try {

if(searcher != null)

searcher.close();

} catch (IOException e) {

e.printStackTrace();

}

}

分享到:
评论

相关推荐

    lucene-core-2.9.4,lucene-core-3.0.2,lucene-core-3.0.3,lucene-core-3.4.0

    `org`目录则很可能包含了Lucene库的类文件结构,按照包名组织,便于Java虚拟机加载和运行。 在实际应用中,开发者可以根据项目需求选择适合的Lucene版本。例如,如果对内存效率有较高要求,2.9.4的内存索引功能可能...

    lucene-core-3.0.2.jar,lucene-demos-3.0.2.jar

    总的来说,Lucene 3.0.2是构建全文搜索引擎的强大工具,其核心库提供了丰富的功能,而演示程序则为学习和实践提供了便利。无论是对单个文件的索引,还是在Web环境中的集成应用,Lucene都展现出了其灵活性和实用性。...

    lucene-codecs-4.4.0.zip

    通过深入学习Lucene 4.4.0和Java核心库,开发者可以更好地理解和利用这些工具,构建高效、可扩展的全文搜索引擎和应用程序。无论是对于搜索技术的专研,还是Java编程的提升,这都是非常有价值的学习资源。

    MMAnalyzer 分词必导入jar包(lucene-core-2.4.1.jar je-analysis-1.5.3.jar)

    通过以上介绍,我们了解到MMAnalyzer作为JeasyAnalysis的一部分,是进行中文分词的重要工具,而`lucene-core-2.4.1.jar`则是其背后的基石,提供了必要的搜索和分析功能。正确地理解并使用这两个库,可以帮助开发者在...

    lucene-analyzers-3.3.0 jar包和源码

    在信息技术领域,搜索引擎是至关重要的工具,而Lucene作为开源全文检索库,为开发者提供了强大的搜索功能。本文将深入探讨Lucene-Analyzers-3.3.0版本,解析其jar包与源码,帮助读者掌握这一核心组件的工作原理和...

    lucene-memory-3.0.1.jar

    在信息技术领域,搜索引擎是至关重要的工具,而Apache Lucene作为一款高性能、全文本搜索库,为开发者提供了强大的搜索引擎功能。本文将深入探讨Lucene的一个特殊模块——Memory索引,以“lucene-memory-3.0.1.jar”...

    apache-lucene-analyzers.jar

    总的来说,"apache-lucene-analyzers.jar"是Apache Lucene库的重要组成部分,它提供了丰富的文本分析工具,使得开发人员可以构建出高效、精准的全文搜索引擎。通过对文本的智能处理,它能帮助用户找到他们真正想要的...

    lucene-4.0.0-src.zip 【Lucene 4.0.0源码包src , source】

    Lucene,这个由Apache软件基金会维护的开源全文检索库,是Java开发者构建高性能、可扩展的信息检索应用的重要工具。4.0.0版本的发布,为开发者提供了更强大的功能和优化的性能。本篇文章将围绕"lucene-4.0.0-src.zip...

    lucene-5.5.3.zip

    Apache Lucene是一个开源全文搜索引擎库,它为开发者提供了在各种应用程序中实现全文搜索功能的工具。这个"lucene-5.5.3.zip"压缩包包含了Lucene 5.5.3版本的所有组件和资源,使得开发人员可以方便地集成到自己的...

    lucene-3.0.1库及源代码

    总结,Lucene 3.0.1是一个强大而灵活的全文检索工具,它的核心在于倒排索引和高效的查询处理。通过源代码学习,开发者不仅可以掌握Lucene的工作原理,还能根据需求进行定制化开发。无论是构建搜索引擎还是提升现有...

    最新版linux lucene-8.10.0.tgz

    - 将编译生成的jar文件添加到你的Java项目类路径中,或者如果你使用的是现代的构建工具如Maven或Gradle,可以在pom.xml或build.gradle文件中添加对应的依赖。 4. **基本概念**: - **索引**:Lucene的核心是建立...

    lucene-highlighter-3.4.0.jar

    《Lucene Highlighter 3.4.0:搜索引擎中的文本高亮工具》 在信息爆炸的时代,搜索引擎成为了我们获取知识的重要途径。Apache Lucene,作为一款高性能、全文本搜索库,为开发者提供了强大的搜索功能。其中,Lucene ...

    lucene-core-3.5.0.jar和junit4jar_xpgod

    Lucene提供了索引和搜索文本的高级工具,它能快速地对大量数据进行全文检索,支持多种查询语法,包括布尔操作符、短语查询、近似查询等。 3.5.0是Lucene的一个版本号,每个版本可能包含性能优化、新特性和错误修复...

    java全文搜索lucene-3.0.0-src+lib.zip

    Java全文搜索引擎Lucene 3.0.0是一个强大且灵活的工具,不仅适用于大型数据集的搜索,也适用于小型应用的快速实现。通过深入理解和掌握Lucene的源码,开发者能够构建出高效、精准的全文搜索系统,提升应用程序的用户...

    lucene-3.5.0.jar

    它并非完整的搜索引擎,而是提供了一套强大的索引和搜索工具,允许开发者构建自己的搜索引擎。3.5.0版本是在2010年发布的,尽管现在已经有更新的版本,但3.5.0仍被许多项目所使用,尤其是那些对稳定性和兼容性有较高...

    Lucene 5 主要jar包

    Apache Lucene是一个开源全文搜索引擎库,它为...总的来说,Lucene 5.0.0的这些jar文件为开发者提供了构建高效、灵活的全文搜索引擎所需的所有工具,但正确理解和使用它们需要对Lucene的架构和工作原理有深入的理解。

    lucene2.3API中文文档、lucene-3.5.0JAR包

    总之,Lucene作为强大的全文检索工具,其API文档和相关总结是学习和应用的基础。从2.3到3.5.0的版本升级,不仅带来了功能增强,也反映了Lucene在搜索领域的持续发展。对于开发者来说,深入理解和熟练运用这些知识点...

    lucene-core-2.9.4.jar.zip

    例如,如果只导入了MMAnalyzer而忽略了lucene-core-2.4.1.jar,那么在运行包含MMAnalyzer的代码时,系统可能会报找不到类的错误,因为MMAnalyzer的相关类定义在Lucene的核心库中。因此,确保正确地引入所有必要的...

    lucene-highlighter-4.4.0.jar

    总的来说,Apache Lucene 4.4.0的Highlighter模块是实现搜索结果高亮的关键工具,它通过一系列精细的组件协作,为用户提供清晰、直观的搜索体验。深入了解和掌握这个模块,对于提升Java应用中的全文检索质量至关重要...

Global site tag (gtag.js) - Google Analytics