6.Lucene刪除索引

在我們刪除數據時,我們也應該同時把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();
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章