在我们删除数据时,我们也应该同时把lucene中的数据删掉。
在lucene中删除也比较简单,我们只要调用deleteDocuments即可删除。
indexWriter.deleteDocuments(term);
附录:完整代码
@Test
public void deleteIndex() {
// lucene索引目录位置
String indexDir = "E:\\develop\\demo\\lucene-learn\\lucene-index";
File luceneIndexDirectory = new File(indexDir);
try (Directory directory = MMapDirectory.open(luceneIndexDirectory.toPath())) {
// 创建索引写入
IndexWriterConfig indexWriterConfig = new IndexWriterConfig(new IKAnalyzer());
indexWriterConfig.setOpenMode(IndexWriterConfig.OpenMode.CREATE_OR_APPEND);
// 设置缓存区大小,每n个文档写入一次
indexWriterConfig.setMaxBufferedDocs(1000);
IndexWriter writer = new IndexWriter(directory, indexWriterConfig);
// 设置每个segments保存几个文档,该值越大创建索引时间越小,对应的搜索会变慢
writer.forceMerge(100);
// 删除文档
writer.deleteDocuments(new Term("id", "1"));
// 提交保存索引
writer.flush();
writer.commit();
writer.close();
} catch (IOException e) {
System.err.println(String.format("打开索引目录%s失败", indexDir));
e.printStackTrace();
}
}