`

Lucene(三)之IndexReader

阅读更多

 

索引的读取工具IndexReader,主要用来对索引进行读取,包括删除等操作,删除操作的时候,如果删除完成,则必须执行close操作,否则将无法进行删除。

import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.Term;
import org.apache.lucene.index.TermDocs;

public class ReaderTest {
	private String INDEX_STORE_PATH = "d:\\indextest";
	public void test() throws Exception{
		IndexWriter writer = new IndexWriter(INDEX_STORE_PATH, new StandardAnalyzer(), true);
		writer.setUseCompoundFile(false);
		
		Document doc1 = new Document();
		Document doc2 = new Document();
		Document doc3 = new Document();
		
		Field f1 = new Field("bookname", "平凡的世界", Field.Store.YES, Field.Index.TOKENIZED);
		Field f2 = new Field("bookname", "英雄儿女", Field.Store.YES, Field.Index.TOKENIZED);
		Field f3 = new Field("bookname", "基督山伯爵", Field.Store.YES, Field.Index.TOKENIZED);
		
		doc1.add(f1);
		doc2.add(f2);
		doc3.add(f3);
		
		writer.addDocument(doc1);
		writer.addDocument(doc2);
		writer.addDocument(doc3);
		writer.close();
		
		// 使用IndexReader读取索引
		IndexReader reader = IndexReader.open(INDEX_STORE_PATH);
		
		// 显示索引内所有的Document
		System.out.println("索引文档列表:");
		for(int i =0;i<reader.numDocs();i++){
			System.out.println(reader.document(i));
		}
		// 输出当前索引的版本信息
		System.out.println("版本:" + reader.getVersion());
		// 输出当前索引的文档数量
		System.out.println("索引内的文档数量:" + reader.numDocs());
		// 构造一个词条并在索引中查找
		System.out.println();
		System.out.println("查找词条'女'");
		Term term1 = new Term("bookname", "女");
		TermDocs termDocs = reader.termDocs(term1);
		while(termDocs.next()){
			System.out.println("--------------------");
			System.out.println("含所有查找的<" + term1 + ">的Document的编号为" + termDocs.doc());
			System.out.println("Term在文档中出现的次数为:" + termDocs.freq());
		}
		reader.close();
	}
	public void deleteDoc() throws Exception{
		IndexReader reader = IndexReader.open(INDEX_STORE_PATH);
		System.out.println(reader.numDocs());
		reader.deleteDocument(1);
		reader.close();
		
		IndexReader read = IndexReader.open(INDEX_STORE_PATH);
		System.out.println(read.numDocs());
//		System.out.println(read.document(1));
//		System.out.println(read.document(2));
	}
	public static void main(String[] args) throws Exception {
//		new ReaderTest().test();
		new ReaderTest().deleteDoc();
	}

}

 

 

分享到:
评论

相关推荐

    全文检索原理及Lucene实之搜索

    Lucene的架构主要分为索引创建、索引和搜索三个部分。索引创建涉及文档的读取、分词以及索引文件的生成;索引则涉及到索引文件的维护和管理;搜索则是根据用户输入的查询条件从索引中检索出匹配的文档。 #### ...

    lucene索引查看工具及源码

    - **索引读取**:了解 Luke 是如何使用 Lucene 的 `IndexReader` 和 `Directory` 接口来访问和加载索引的。 - **字段和文档处理**:观察 Luke 如何获取和显示文档字段,以及如何解析和展示不同类型的字段值。 - **...

    lucene全文搜素实例 java lucene 实例

    ### 三、Lucene 示例教程 在实际项目中,你可能会遇到以下问题: - 如何处理多语言文本。 - 如何更新或删除已索引的文档。 - 如何实现高级查询,如短语搜索、布尔组合查询、范围查询等。 - 如何优化性能,如批量...

    Lucene时间区间搜索

    // IndexReader是从索引中读取信息的对象 var hits = searcher.Search(query, maxResults); ``` 在这个过程中,Analyzer用于处理文本分析,确保时间戳字段的处理符合预期。然后,使用IndexSearcher的Search方法...

    lucene部分常用代码

    indexreader reader = indexreader.open(directory); indexsearcher searcher = new indexsearcher(reader); hits hits = searcher.search(query); ``` 在上面的代码中,我们使用MultifieldQueryParser来解析查询...

    Lucene+原理与代码分析完整版

    三、Lucene索引原理 3.1 倒排索引 倒排索引是Lucene的核心数据结构,它将每个Term(词元)映射到包含该Term的所有文档集合,大大提高了搜索效率。 3.2 分词与词频统计 在建立索引时,Analyzer会进行分词,并计算...

    lucene3 例子

    7. **实用工具类**:可能介绍了Directory、IndexReader、IndexWriter等关键类的使用方法,以及如何进行索引的读写操作。 8. **实战示例**:博主可能通过一个具体的案例,演示了从创建索引到执行搜索的完整流程,...

    Lucene 索引的简单使用

    Lucene,作为Apache软件基金会的一个开源项目,是Java平台上的全文检索库,它提供了文本检索的核心工具,使得开发者能够快速地在应用程序中实现高级的搜索功能。本篇文章将详细阐述如何使用Lucene来创建和查询索引,...

    Lucene的的学习资料及案例

    3. **查询索引**: 创建一个IndexReader和IndexSearcher对象,然后构造Query对象,调用`search()`方法执行查询。 4. **处理结果**: `TopDocs`对象包含了搜索结果的分数和文档编号,可以进一步获取文档内容。 ### ...

    Lucene4 全文检索

    **Lucene4 全文检索详解** Lucene4 是 Apache 软件基金会的一个开源全文检索库,它为开发者提供了强大的文本搜索功能。作为一个高级的搜索引擎工具包,Lucene4 提供了完整的索引和搜索机制,使得在文件和数据库中...

    lucene for java 简单demo

    import org.apache.lucene.index.IndexReader; import org.apache.lucene.index.IndexWriter; import org.apache.lucene.index.IndexWriterConfig; import org.apache.lucene.queryparser.classic.QueryParser; ...

    lucene-4.7.0.

    其中包括文档(Document)类用于存储信息,字段(Field)类用于定义文档的各个属性,以及索引写入器(IndexWriter)和索引阅读器(IndexReader)用于创建和读取索引。此外,搜索器(Searcher)和查询解析器...

    lucene1.4.3.jar

    此外,Lucene 1.4.3还提供了丰富的API供开发者使用,例如,IndexWriter用于创建和更新索引,IndexReader用于读取索引,Searcher用于执行查询。这些API的设计使得开发者能够灵活地构建自己的搜索引擎应用。 通过阅读...

    lucene包,lucene实现核心代码

    - `IndexReader`:读取索引的接口,用于获取文档数量、文档信息等。 - `IndexSearcher`:执行搜索操作的核心类,可以接受Query对象并返回匹配的文档集。 - `Query`:代表用户输入的搜索条件,如TermQuery、...

    lucene 华电项目 源码

    Lucene的核心组件包括Analyzer(分析器)、Document(文档)、IndexWriter(索引写入器)、IndexReader(索引读取器)和Searcher(搜索器)。Analyzer负责将文本分词,Document用于存储待检索的信息,IndexWriter...

    lucene 小资源

    按照Java的包命名规范,`org`下可能包含了一系列与Lucene相关的子包,如`org.apache.lucene`,这是Lucene的主要包名,里面包含了Lucene的各种类和接口,如索引相关的`IndexWriter`、`IndexReader`,搜索相关的`...

    lucene整理文档,lucene详细描述,安装使用过程。

    5. **IndexReader**: 用于读取已建立的索引,提供对索引的访问,支持多线程并发访问。 6. **IndexSearcher**: 搜索器负责执行查询并返回匹配结果。它使用 QueryParser 解析用户输入的查询,并利用 Scorer 来计算...

    lucene入门小例子

    Lucene是中国大百科全书式的全文检索库,它在Java世界中扮演着核心角色,为开发者提供了强大的文本搜索功能。这个“lucene入门小例子”很可能是为了帮助初学者理解并掌握Lucene的基本用法而设计的一系列示例代码。 ...

    Lucene之Helloworld

    《Lucene之HelloWorld》 在信息技术领域,搜索引擎是一个不可或缺的部分,而Apache Lucene作为一款高性能、全文本搜索库,为开发者提供了强大的文本检索能力。本文将深入探讨如何使用Lucene进行基本操作,通过...

    Lucene索引器实例

    - 创建`IndexReader`和`IndexSearcher`:它们分别用于读取索引和执行搜索。 - 创建`QueryParser`:解析用户输入的查询字符串并生成`Query`对象。 - 执行搜索:使用`IndexSearcher`的`search`方法,传入`Query`和`...

Global site tag (gtag.js) - Google Analytics