索引的读取工具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的架构主要分为索引创建、索引和搜索三个部分。索引创建涉及文档的读取、分词以及索引文件的生成;索引则涉及到索引文件的维护和管理;搜索则是根据用户输入的查询条件从索引中检索出匹配的文档。 #### ...
- **索引读取**:了解 Luke 是如何使用 Lucene 的 `IndexReader` 和 `Directory` 接口来访问和加载索引的。 - **字段和文档处理**:观察 Luke 如何获取和显示文档字段,以及如何解析和展示不同类型的字段值。 - **...
### 三、Lucene 示例教程 在实际项目中,你可能会遇到以下问题: - 如何处理多语言文本。 - 如何更新或删除已索引的文档。 - 如何实现高级查询,如短语搜索、布尔组合查询、范围查询等。 - 如何优化性能,如批量...
// IndexReader是从索引中读取信息的对象 var hits = searcher.Search(query, maxResults); ``` 在这个过程中,Analyzer用于处理文本分析,确保时间戳字段的处理符合预期。然后,使用IndexSearcher的Search方法...
indexreader reader = indexreader.open(directory); indexsearcher searcher = new indexsearcher(reader); hits hits = searcher.search(query); ``` 在上面的代码中,我们使用MultifieldQueryParser来解析查询...
三、Lucene索引原理 3.1 倒排索引 倒排索引是Lucene的核心数据结构,它将每个Term(词元)映射到包含该Term的所有文档集合,大大提高了搜索效率。 3.2 分词与词频统计 在建立索引时,Analyzer会进行分词,并计算...
7. **实用工具类**:可能介绍了Directory、IndexReader、IndexWriter等关键类的使用方法,以及如何进行索引的读写操作。 8. **实战示例**:博主可能通过一个具体的案例,演示了从创建索引到执行搜索的完整流程,...
Lucene,作为Apache软件基金会的一个开源项目,是Java平台上的全文检索库,它提供了文本检索的核心工具,使得开发者能够快速地在应用程序中实现高级的搜索功能。本篇文章将详细阐述如何使用Lucene来创建和查询索引,...
3. **查询索引**: 创建一个IndexReader和IndexSearcher对象,然后构造Query对象,调用`search()`方法执行查询。 4. **处理结果**: `TopDocs`对象包含了搜索结果的分数和文档编号,可以进一步获取文档内容。 ### ...
**Lucene4 全文检索详解** Lucene4 是 Apache 软件基金会的一个开源全文检索库,它为开发者提供了强大的文本搜索功能。作为一个高级的搜索引擎工具包,Lucene4 提供了完整的索引和搜索机制,使得在文件和数据库中...
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; ...
其中包括文档(Document)类用于存储信息,字段(Field)类用于定义文档的各个属性,以及索引写入器(IndexWriter)和索引阅读器(IndexReader)用于创建和读取索引。此外,搜索器(Searcher)和查询解析器...
此外,Lucene 1.4.3还提供了丰富的API供开发者使用,例如,IndexWriter用于创建和更新索引,IndexReader用于读取索引,Searcher用于执行查询。这些API的设计使得开发者能够灵活地构建自己的搜索引擎应用。 通过阅读...
- `IndexReader`:读取索引的接口,用于获取文档数量、文档信息等。 - `IndexSearcher`:执行搜索操作的核心类,可以接受Query对象并返回匹配的文档集。 - `Query`:代表用户输入的搜索条件,如TermQuery、...
Lucene的核心组件包括Analyzer(分析器)、Document(文档)、IndexWriter(索引写入器)、IndexReader(索引读取器)和Searcher(搜索器)。Analyzer负责将文本分词,Document用于存储待检索的信息,IndexWriter...
按照Java的包命名规范,`org`下可能包含了一系列与Lucene相关的子包,如`org.apache.lucene`,这是Lucene的主要包名,里面包含了Lucene的各种类和接口,如索引相关的`IndexWriter`、`IndexReader`,搜索相关的`...
5. **IndexReader**: 用于读取已建立的索引,提供对索引的访问,支持多线程并发访问。 6. **IndexSearcher**: 搜索器负责执行查询并返回匹配结果。它使用 QueryParser 解析用户输入的查询,并利用 Scorer 来计算...
Lucene是中国大百科全书式的全文检索库,它在Java世界中扮演着核心角色,为开发者提供了强大的文本搜索功能。这个“lucene入门小例子”很可能是为了帮助初学者理解并掌握Lucene的基本用法而设计的一系列示例代码。 ...
《Lucene之HelloWorld》 在信息技术领域,搜索引擎是一个不可或缺的部分,而Apache Lucene作为一款高性能、全文本搜索库,为开发者提供了强大的文本检索能力。本文将深入探讨如何使用Lucene进行基本操作,通过...
- 创建`IndexReader`和`IndexSearcher`:它们分别用于读取索引和执行搜索。 - 创建`QueryParser`:解析用户输入的查询字符串并生成`Query`对象。 - 执行搜索:使用`IndexSearcher`的`search`方法,传入`Query`和`...