lucene--6.索引维护之增删改

本文介绍了如何使用Lucene进行索引的添加、删除及修改操作。包括详细的步骤说明及示例代码,帮助读者掌握基本的索引管理技能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1      索引库的添加

1.1    步骤

向索引库中添加document对象。

第一步:先创建一个indexwriter对象

第二步:创建一个document对象

第三步:把document对象写入索引库

第四步:关闭indexwriter。

 

1.2    代码实现

//添加索引
	@Test
	public void addDocument() throws Exception {
		//索引库存放路径
		Directory directory = FSDirectory.open(new File("D:\\temp\\0108\\index"));
		
		IndexWriterConfig config = new IndexWriterConfig(Version.LATEST, new IKAnalyzer());
		//创建一个indexwriter对象
		IndexWriter indexWriter = new IndexWriter(directory, config);
		//创建一个Document对象
		Document document = new Document();
		//向document对象中添加域。
		//不同的document可以有不同的域,同一个document可以有相同的域。
		document.add(new TextField("filename", "新添加的文档", Store.YES));
		document.add(new TextField("content", "新添加的文档的内容", Store.NO));
		document.add(new TextField("content", "新添加的文档的内容第二个content", Store.YES));
		document.add(new TextField("content1", "新添加的文档的内容要能看到", Store.YES));
		//添加文档到索引库
		indexWriter.addDocument(document);
		//关闭indexwriter
		indexWriter.close();
		
	}

1.3    公共抽取

public IndexWriter getIndexWriter() throws Exception{
   // 第一步:创建一个java工程,并导入jar包。
   // 第二步:创建一个indexwriter对象。
   Directory directory = FSDirectory.open(new File("F:\\lucene\\index"));
   // Directory directory = new RAMDirectory();//保存索引到内存中 (内存索引库)
   Analyzer analyzer = new StandardAnalyzer();// 官方推荐
   IndexWriterConfig config = new IndexWriterConfig(Version.LATEST, analyzer);
   return new IndexWriter(directory, config);
}

2      索引库删除

2.1    删除全部

//全删除
@Test
public void testAllDelete() throws Exception {
   IndexWriter indexWriter = getIndexWriter();
   indexWriter.deleteAll();
   indexWriter.close();
} 

说明:将索引目录的索引信息全部删除,直接彻底删除,无法恢复。

 

此方法慎用!!

 

2.2    指定查询条件删除

//根据条件删除
@Test
public void testDelete() throws Exception {
   IndexWriter indexWriter = getIndexWriter();
   Query query = new TermQuery(new Term("fileName","apache"));
   indexWriter.deleteDocuments(query);
   indexWriter.close();
} 

3      索引库的修改

原理就是先删除后添加。

//修改
@Test
public void testUpdate() throws Exception {
   IndexWriter indexWriter = getIndexWriter();
   Document doc = new Document();
   doc.add(new TextField("fileN", "测试文件名",Store.YES));
   doc.add(new TextField("fileC", "测试文件内容",Store.YES));
   indexWriter.updateDocument(new Term("fileName","lucene"), doc, new IKAnalyzer());
   indexWriter.close();
} 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值