在我們刪除數據時,我們也應該同時把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();
}
}