QM.C

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

1           索引库维护

在第4节,我们需要重新创建索引的时候,是去索引库目录下,手动删除的。

 

而在实际的开发中,我们可能压根就不知道索引库在哪,就算知道,我们也不可能每次都去手动删除,非常之麻烦!!!

所以,我们必须学习如何维护索引库,使用程序来操作索引库。

需要注意的是,索引是与文档紧密相连的,因此对索引的维护,实际上就是对文档的增删改

 

1.1        添加索引(文档)

1.1.1       需求

数据库中新上架了图书,必须把这些图书也添加到索引库中,不然就搜不到该新上架的图书了。

 

1.1.2       代码实现

调用 indexWriter.addDocument(doc)添加索引。

参考入门示例中的创建索引。

 

1.2        删除索引(文档)

1.2.1       需求

某些图书不再出版销售了,我们需要从索引库中移除该图书。

1.2.2       代码实现

    @Test

    public void deleteIndex() throws Exception {

       // 1、指定索引库目录

       Directory directory = FSDirectory.open(new File("F:\\lucene\\0719"));

       // 2、创建IndexWriterConfig

       IndexWriterConfig cfg = new IndexWriterConfig(Version.LATEST,

              new StandardAnalyzer());

       // 3、 创建IndexWriter

       IndexWriter writer = new IndexWriter(directory, cfg);

       // 4、通过IndexWriter来删除索引

       // 删除指定索引

       writer.deleteDocuments(new Term("name", "apache"));

       // 5、关闭IndexWriter

       writer.close();

      

       System.out.println("删除成功");

      

    }

1.2.3       清空索引库

@Test

    public void deleteIndex() throws Exception {

       // 1、指定索引库目录

       Directory directory = FSDirectory.open(new File("F:\\lucene\\0719"));

       // 2、创建IndexWriterConfig

       IndexWriterConfig cfg = new IndexWriterConfig(Version.LATEST,

              new StandardAnalyzer());

       // 3、 创建IndexWriter

       IndexWriter writer = new IndexWriter(directory, cfg);

       // 4、通过IndexWriter来删除索引

       // 删除指定索引

       writer.deleteAll();

       // 5、关闭IndexWriter

       writer.close();

      

       System.out.println("清空索引库成功");

      

    }

 

1.3        更新索引(文档)

1.3.1       说明

Lucene更新索引比较特殊,是先删除满足条件的索引,再添加新的索引。

1.3.2       代码实现

// 修改索引

    @Test

    public void updateIndex() throws Exception {

       // 1、指定索引库目录

       Directory directory = FSDirectory.open(new File("F:\\lucene\\0719"));

       // 2、创建IndexWriterConfig

       IndexWriterConfig cfg = new IndexWriterConfig(Version.LATEST,

              new StandardAnalyzer());

       // 3、 创建IndexWriter

       IndexWriter writer = new IndexWriter(directory, cfg);

       // 4、通过IndexWriter来修改索引

       // a)、创建修改后的文档对象

       Document document = new Document();

 

       // 文件名称

       Field filenameField = new StringField("name", "updateIndex", Store.YES);

       document.add(filenameField);

 

       // 修改指定索引为新的索引

       writer.updateDocument(new Term("name", "apache"), document);

 

       // 5、关闭IndexWriter

       writer.close();

      

       System.out.println("更新成功");

    }

 

 

posted on 2019-07-18 19:29  QM.C  阅读(163)  评论(0编辑  收藏  举报