Lucene索引库的增删改

Lucene的索引库的维护分为四个部分,增删改查,这里就先只讲增删改,查会在下一篇文章单独拎出来讲。

1.添加文档

2.删除文档
1) 删除全部
2) 根据查询、关键词删除文档

3.修改文档
修改的原理时先删除后添加

代码如下:

package com.itheima;

import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.document.StoredField;
import org.apache.lucene.document.TextField;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.index.Term;
import org.apache.lucene.queryparser.classic.ParseException;
import org.apache.lucene.store.FSDirectory;
import org.junit.Before;
import org.junit.Test;
import org.wltea.analyzer.lucene.IKAnalyzer;

import java.io.File;
import java.io.IOException;

/**
 * @ClassName luceneFive
 * @Description TODO
 * @Author gkz
 * @Date 2019/8/23 16:59
 * @Version 1.0
 **/
public class luceneFive {

    private  IndexWriter indexWriter;


    @Before()
    public void initIndexWriter() throws IOException {

        //创建一个IndexWriter对象,需要使用IKAnalyzer作为分析器
        indexWriter=
                new IndexWriter(FSDirectory.open(new File("E:\\Desktop").toPath()),
                        new IndexWriterConfig(new IKAnalyzer()));
    }

    @Test
    public void addDocument() throws ParseException, IOException {
        //创建一个Document对象
        Document document=new Document();
        //向document对象中添加域
        document.add(new TextField("name","新添加的文件", Field.Store.YES));
        document.add(new TextField("context","新添加的文件内容", Field.Store.NO));
        document.add(new StoredField("path","E:\\Desktop\\lucenetest"));
        //把文档对象写入索引库
        indexWriter.addDocument(document);
        //关闭索引库
        indexWriter.close();

    }


    @Test
    public void deleteAllDocument() throws IOException {
       //删除所有文档
        indexWriter.deleteAll();
        indexWriter.close();
    }


    @Test
    public void deleteDocumentByQuery() throws IOException {
        //删除name域带apache的所有的文档
        indexWriter.deleteDocuments(new Term("name","apache"));
        indexWriter.close();
    }

    @Test
    public void updateDocument() throws IOException {
        //创建一个新的文档对象
        Document document=new Document();
        document.add(new TextField("name","更新之后的文档", Field.Store.YES));
        document.add(new TextField("name1","更新之后的文档2", Field.Store.YES));
        document.add(new TextField("name2","更新之后的文档3", Field.Store.YES));
        indexWriter.updateDocument(new Term("name2","spring"),document);
        //关闭索引库
        indexWriter.close();
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.Lucene简介 Lucene是apache下的一个开源的全文检索引擎工具包。 1.1.全文检索(Full-t...
    唯死撑尔阅读 546评论 0 0
  • Lucene是一个开放源代码的全文检索引擎工具包,它提供了完整的查询引擎和索引引擎,开发人员可以方便的在目标系统中...
    _时间海阅读 300评论 0 0
  • 原文链接:http://www.chedong.com/tech/lucene.htmlLucene是一个基于Ja...
    流河阅读 670评论 0 3
  • 认识你,是我前世在佛祖面前修来的缘; 失去你,是我俩今身的的份不足够; 既是有缘,我们就应该好好的珍惜; 既然无份...
    小面包跳跳阅读 380评论 0 0
  • 看白夜行时男女主被逼着一步一步做了很多错事,当时就想起文秀说过的“这个世界不是非黑即白,更多的是灰色地带”。但是所...
    私奔的海阅读 262评论 2 0