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