`
longgangbai
  • 浏览: 7258191 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

luence学习的指南文档(三)

阅读更多

3.  使用场合:多个搜索引擎查询的数据结果的合并信息操作:添加索引:删除索引 恢复索引

备注:使用IndexReader对象删除文件对象时,它的并非实质上删除,仅仅时设置一个删除的标识,直到IndexReader调用close方法之后才真正删除它们。删除可以根据特定项和索引删除,在删除之后最好使用IndexWriter其进行优化设置.(注意Luence中并没有专门update的方法设置修改索引必须先删除后添加新的索引的方式开发)

      /**

       * 删除索引对象

       * @throws IOException

       */

      public void deleteIndex(Directory dir)throws IOException

      {

         //打开文件的删除使用IndexReader

         IndexReader reader=IndexReader.open(dir);

         //reader.maxDoc() 下一个Document对象的编号为2

          //reader.numDocs() 索引中有文档数目

         System.out.println("before delete max doc="+reader.maxDoc()+" numDocs "+reader.numDocs());

         //删除编号为1的文档对象

         reader.delete(1);

           //reader.isDeleted(1) 检测是否删除

          //关闭索引读取对象

         reader.close();

         //对删除后的信息进行重新编号的文档进行优化

         IndexWriter writer=new IndexWriter(dir,new WhitespaceAnalyzer(),false);

         //采用优化方案

         writer.optimize();

         writer.close();

         reader=IndexReader.open(dir);

         System.out.println("after delete max doc="+reader.maxDoc()+" numDocs "+reader.numDocs());

          reader.close();

  }

    /**

     * 修改索引方法

     * @throws IOException

     */

  public void updateIndex()throws IOException

  {

         //测试删除前的文档的数量

         assertEquals(1, this.getHitCount("city", "Amsterdam"));

        

         IndexReader reader=IndexReader.open(dir);

         //删除索引的信息

         reader.delete(new Term("city","Amsterdam"));

          // 在文档被设置删除标识,但没有执行最后删除之前,恢复被标记为删除的文档。reader.undeleteAll();

         reader.close();

         //测试删除后文档数量

         assertEquals(0, this.getHitCount("city", "Amsterdam"));

         IndexWriter writer=new IndexWriter(dir,this.getAnalyzer(), false);

          Document doc=new Document();

          doc.add(Field.Keyword("id", "1"));

        

          doc.add(Field.UnIndexed("country", "Netherland"));

          doc.add(Field.UnStored("contents","Amsterdam has lots of bridges"));

          doc.add(Field.Text("city","Haag"));

          writer.addDocument(doc);

          writer.optimize();

          writer.close();

          assertEquals(1, this.getHitCount("city", "Haag"));

  }

  /**

   * 字词分析器的

   */

  public Analyzer getAnalyzer()

  {

      return new WhitespaceAnalyzer();

  }

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics