美文网首页
06_Lucene索引

06_Lucene索引

作者: 对方不想理你并向你抛出一个异常 | 来源:发表于2018-01-21 01:12 被阅读0次

    索引库的添加

    • 向索引库中添加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();
        }
    

    相关文章

      网友评论

          本文标题:06_Lucene索引

          本文链接:https://www.haomeiwen.com/subject/hdsxaxtx.html