Lucene 索引维护

1.修改索引

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

/**
     * 修改索引库
     */
    @Test
    public void testUpdateIndex() throws IOException {

        // 创建分析器(分词器) StandardAnalyzer标准分词器,对英文分词效果好,对中文是单字分词
        Analyzer analyzer = new StandardAnalyzer();
        // 创建IndexWriterConfig配置信息类,指定切分词使用的分词器
        IndexWriterConfig config = new IndexWriterConfig(analyzer);
        // 创建Directory对象,声明索引库存储位置
        Directory dir = FSDirectory.open(Paths.get("D:\\lucene"));
        // 创建IndexWriter写入对象,指定写入的位置和使用的config初始化对象
        IndexWriter indexWriter = new IndexWriter(dir, config);

        // 需要变更的内容
        Document document = new Document();

        // 创建域对象,并且放入文档对象中
        document.add(new StringField("id", "100000003140", TextField.Store.YES));
        document.add(new TextField("name", "vivo", TextField.Store.YES));

        // 执行更新,会把所有符合条件的Document先删除,再新增。
        indexWriter.updateDocument(new Term("id", "100000003140"), document);
        // 释放资源
        indexWriter.close();
    }

2.删除索引

/**
 * 删除索引库
 */
@Test
public void testDeleteIndex() throws IOException {

    // 创建分析器(分词器) StandardAnalyzer标准分词器,对英文分词效果好,对中文是单字分词
    Analyzer analyzer = new StandardAnalyzer();
    // 创建IndexWriterConfig配置信息类,指定切分词使用的分词器
    IndexWriterConfig config = new IndexWriterConfig(analyzer);
    // 创建Directory对象,声明索引库存储位置
    Directory dir = FSDirectory.open(Paths.get("D:\\lucene"));
    // 创建IndexWriter写入对象,指定写入的位置和使用的config初始化对象
    IndexWriter indexWriter = new IndexWriter(dir, config);

    // 根据Term删除索引库
    // indexWriter.deleteDocuments(new Term("id", "100000003140"));
    // 删除全部索引(慎用)
    indexWriter.deleteAll();

    // 释放资源
    indexWriter.close();
}

猜你喜欢

转载自www.cnblogs.com/roadlandscape/p/12547655.html