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

}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值