您当前的位置: 首页 > 

无花果有果

暂无认证

  • 1浏览

    0关注

    28博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Lucene索引库维护

无花果有果 发布时间:2022-05-28 20:41:32 ,浏览量:1

添加索引

调用 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();
    }
关注
打赏
1653747677
查看更多评论
立即登录/注册

微信扫码登录

0.6520s