`

lucene--索引工具类

阅读更多

创建索引的步骤:

0.创建分词器

Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_36);

1.创建Directory,索引存放的位置

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

2.创建IndexWrite,索引写入器

IndexWriterConfig iwc = new IndexWriterConfig(Version.LUCENE_36,analyzer);

IndexWrite write = new IndexWriter(directory,iwc);

3.创建Document对象

Document doc = new Document();

4.给Document添加Field

doc.add(new Field("name",names[i],Store.YES,Index.ANALYZED)); --添加字符串

doc.add(new NumericField("attach",Store.YES,true).setIntValue(23));  --添加整数

doc.add(new NumericField("attach",Store.YES,true).setDoubleValue(2.5d)); --添加双精度浮点

doc.add(new NumericField("attach",Store.YES,true).setFloatValue(3.6f)); --添加单精度浮点

doc.add(new NumericField("attach",Store.YES,true).setLongValue(44));  --添加长整型

doc.add(new NumericField("date",Store.YES,true).setLongValue(201254221)); --添加日期

doc.setBoost(2.5); --加权

5.添加文档到索引

writer.addDocument(doc);

6.提交或者关闭IndexWrite写入器(只有这样,索引才会正常创建)

writer.commit();

writer.close();

 

知识点

一、第0步骤的分词器(可以自定义分词器,重难点)

二、第1步骤创建索引文件目录(单例模式创建)

三、给Document添加域(不同数据类型的域值操作)

 

单例模式创建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 (IOException e) {

e.printStackTrace();

}

}

/**

 * 获取索引目录

 * @return

 * @author:qiuchen

 */

public static Directory getDictionary(){

return directory;

}

 

/**

 * 获取读取器

 * @return

 * @author:qiuchen

 */

public static IndexReader getIndexReader(){

return reader;

}

 

/**

 * 获取查询器

 * @return

 * @author:qiuchen

 */

public static IndexSearcher getIndexSearcher(){

try {

if(reader != null){

reader = IndexReader.open(directory);

}else{

IndexReader ir = IndexReader.openIfChanged(reader);

if(ir != null){

reader.close();

reader = ir;

}

}

return new IndexSearcher(reader);

} catch (CorruptIndexException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

return null;

}

/**

 * 关闭查询器

 * @param searcher

 * @author:qiuchen

 */

public static void closeSearcher(IndexSearcher searcher){

try {

if(searcher != null){

searcher.close();

}

} catch (IOException e) {

e.printStackTrace();

}

}

 

/**

 * 关闭写入器

 * @param indexWriter

 * @author:qiuchen

 */

public void closeWrite(IndexWriter indexWriter){

try {

if(indexWriter != null){

indexWriter.close();

}

} catch (CorruptIndexException e) {

e.printStackTrace();

} 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)

    `lucene-core-2.4.1.jar`是Lucene的核心库,包含了Lucene的基础组件和API,如文档处理、索引操作、查询构造等,这些是MMAnalyzer进行分词工作所必需的。 在实际项目中,正确导入这两个JAR包是确保MMAnalyzer正常...

    lucene-memory-3.0.1.jar

    其中,`org.apache.lucene.index.memory`包下包含了一系列用于内存索引操作的核心类,如`MemoryIndex`和`MemoryReader`。`MemoryIndex`类用于构建和管理内存中的索引,而`MemoryReader`则负责读取和查询这些索引。...

    apache-lucene-analyzers.jar

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

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

    5. **内存与磁盘存储(Memory & Disk Storage)**:Lucene利用`RAMDirectory`和`FSDirectory`等类管理索引在内存和磁盘上的存储,以平衡性能和资源消耗。 为了在Eclipse中查看和理解这些源码,我们需要进行以下步骤...

    lucene-5.5.3.zip

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

    最新版linux lucene-8.10.0.tgz

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

    lucene-3.0.1库及源代码

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

    lucene-3.5.0.jar

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

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

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

    lucene-core-3.5.0.jar和junit4jar_xpgod

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

    Lucene 5 主要jar包

    1. **lucene-core-5.0.0.jar**:这是Lucene的核心组件,包含了索引和搜索的基本功能。它包括文档的创建、索引、查询以及结果的排序和过滤。这个jar包提供了如Analyzer、IndexWriter、Directory、QueryParser等关键类...

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

    你可以找到关于Lucene核心组件的详细信息,如Analyzer(分析器)用于文本预处理,Tokenizer(分词器)进行词汇分割,Filter(过滤器)进行额外的文本处理,以及Document(文档)、Field(字段)和IndexWriter(索引...

    lucene-core-3.5.0.jar+lukeall-3.5.0.jar

    LUKE(Lucene Index Browser Utility Kit)是一个强大的Lucene索引浏览器和分析工具,它可以帮助开发者查看、分析、调试Lucene索引。"lukeall-3.5.0.jar"则是包含LUKE工具的完整版本,适用于Lucene 3.5.0。通过LUKE...

    lucene-core-2.9.4.jar.zip

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

    lucene-core-3.0.0.rar_lucene_lucene-core3

    5. **索引器(IndexWriter)**:用于创建和更新索引的类,负责读取文档,使用分词器处理内容,并将处理后的结果构建为倒排索引。 6. **查询解析器(QueryParser)**:用户输入的查询字符串会被转换成内部表示形式,...

    官方最新完整版lucene-6.6.0.zip

    《Apache Lucene 6.6.0:...总之,Apache Lucene 6.6.0版本以其强大、灵活的全文检索能力,为开发者提供了构建高效搜索引擎的工具。通过深入理解其核心机制和功能,开发者可以更好地利用这一技术,提升应用的搜索体验。

Global site tag (gtag.js) - Google Analytics