Lucene索引库维护

添加索引

调用 indexWriter.addDocument(doc)添加索引。

修改索引

更新索引是先删除再添加,建议对更新需求采用此方法并且要保证对已存在的索引执行更新,可以先查
询出来,确定更新记录存在执行更新操作。
如果更新索引的目标文档对象不存在,则执行添加。

@Test
    public void testIndexUpdate() throws Exception {
        // 创建分词器
        Analyzer analyzer = new StandardAnalyzer();
        // 创建Directory流对象
        Directory directory = FSDirectory.open(Paths.get("E:\\luceneJdDir"));
        // 创建IndexWriteConfig对象,写入索引需要的配置
        IndexWriterConfig config = new IndexWriterConfig(analyzer);
        // 创建写入对象
        IndexWriter indexWriter = new IndexWriter(directory, config);
        // 创建Document
        Document document = new Document();
        document.add(new StringField("id", "1", Field.Store.YES));
        document.add(new TextField("title", "测试修改", Field.Store.YES));
        // 执行更新,会把所有符合条件的Document删除,再新增。
        indexWriter.updateDocument(new Term("id", "1"), document);
        indexWriter.close();
    }

删除索引

删除指定索引

根据Term项删除索引,满足条件的将全部删除。
indexWriter.deleteDocuments(new Term(“id”, “3”));

  @Test
    public void testIndexDelete() throws Exception {
        // 创建Directory流对象
        Directory directory = FSDirectory.open(Paths.get("E:\\luceneJdDir"));
        // 创建IndexWriteConfig对象,写入索引需要的配置
        IndexWriterConfig config = new IndexWriterConfig();
        // 创建写入对象
        IndexWriter indexWriter = new IndexWriter(directory, config);
        // 根据Term删除索引库,name:java
        indexWriter.deleteDocuments(new Term("id", "3"));
        // 释放资源
        indexWriter.close();
    }

删除全部索引(慎用)

将索引目录的索引信息全部删除,直接彻底删除,无法恢复。
建议参照关系数据库基于主键删除方式,所以在创建索引时需要创建一个主键Field,删除时根据此主键
Field删除。
索引删除后将放在Lucene的回收站中,Lucene3.X版本可以恢复删除的文档,3.X之后无法恢复。
indexWriter.deleteAll();

 @Test
    public void testIndexDeleteAll() throws Exception {
    // 创建Directory流对象
    Directory directory = FSDirectory.open(Paths.get("E:\\luceneJdDir"));
    // 创建IndexWriteConfig对象,写入索引需要的配置
     IndexWriterConfig config = new IndexWriterConfig();
    // 创建写入对象
    IndexWriter indexWriter = new IndexWriter(directory, config);
    // 全部删除
    indexWriter.deleteAll();
    // 释放资源
     indexWriter.close();
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值