06_Lucene索引

索引库的添加

  • 向索引库中添加document对象, 步骤
    1. 第一步:先创建一个indexwriter对象
    2. 第二步:创建一个document对象
    3. 第三步:把document对象写入索引库
    4. 第四步:关闭indexwriter。
/**
     * 删除索引
     * @throws Exception
     */
    @Test
    public void testDeleteIndex() throws Exception{
        //创建分词器,StandardAnalyzer标准分词器,标准分词器对英文分词效果很好,对中文是单字分词
        Analyzer analyzer = new IKAnalyzer();
        //指定索引和文档存储的目录
        FSDirectory directory = FSDirectory.open(new File("D:\\BaiduNetdiskDownload\\lucene_day01\\tmp"));

        //创建写对象的初始化对象
        IndexWriterConfig config = new IndexWriterConfig(Version.LUCENE_4_10_3,analyzer);
        //创建索引和文档写对象
        IndexWriter indexWriter = new IndexWriter(directory , config);
        //删除所有
//        indexWriter.deleteAll();

        /**
         * Term词元,就是一个词,
         * 第一个参数:域名,
         * 第二个参数:要删除含有此关键词的数据
         */
        Term term = new Term("fileName" , "apache");
        //根据名称进行删除
        indexWriter.deleteDocuments(term);
        //提交
        indexWriter.commit();
        //关闭
        indexWriter.close();
    }

    /**
     * 更新就是按照传入的Term进行搜索,如果找到结果那么删除,将更新的内容重新生成一个Document对象
     * 如果没有搜索到结果,那么将更新的内容直接添加一个新的Document对象
     * @throws Exception
     */

索引库删除

删除全部

//删除全部索引
    @Test
    public void deleteAllIndex() throws Exception {
        IndexWriter indexWriter = getIndexWriter();
        //删除全部索引
        indexWriter.deleteAll();
        //关闭indexwriter
        indexWriter.close();
    }

说明:将索引目录的索引信息全部删除,直接彻底删除,无法恢复。
此方法慎用!!

指定查询条件删除

//根据查询条件删除索引
    @Test
    public void deleteIndexByQuery() throws Exception {
        IndexWriter indexWriter = getIndexWriter();
        //创建一个查询条件
        Query query = new TermQuery(new Term("filename", "apache"));
        //根据查询条件删除
        indexWriter.deleteDocuments(query);
        //关闭indexwriter
        indexWriter.close();
    }

索引库的修改

原理就是先删除后添加。

    @Test
    public void testUpdateIndex() throws Exception{
        //创建分词器,StandardAnalyzer标准分词器,标准分词器对英文分词效果很好,对中文是单字分词
        Analyzer analyzer = new IKAnalyzer();
        //指定索引和文档存储的目录
        FSDirectory directory = FSDirectory.open(new File("D:\\BaiduNetdiskDownload\\lucene_day01\\tmp"));

        //创建写对象的初始化对象
        IndexWriterConfig config = new IndexWriterConfig(Version.LUCENE_4_10_3,analyzer);
        //创建索引和文档写对象
        IndexWriter indexWriter = new IndexWriter(directory , config);

        Term term = new Term("fileName","1.create web page.txt");

        Document doc = new Document();
        doc.add(new TextField("fileName", "xxxxxxx", Field.Store.YES));
        doc.add(new TextField("fileContext", "xxx I like you very much!", Field.Store.YES));
        doc.add(new LongField("fileSize", 100L, Field.Store.YES));


        indexWriter.updateDocument(term , doc);

        //提交
        indexWriter.commit();
        //关闭
        indexWriter.close();
    }

推荐阅读更多精彩内容