• Lucene的搭建(2)


    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("更新成功");

        }

     

  • 相关阅读:
    JavaScript与C# Windows应用程序交互
    SVG与CSS的特殊性
    Flash 仪表控件 FusionGadgets【转】
    如何获取Windows服务对应程序的所在目录
    记录几个CSS样式
    使用网络调试助手时出现 connect() failed 错误
    使用xml配置文件配置DataGridView的列信息
    javascript解析json
    iPhone开发笔记
    (转)C语言中两种方式表示时间日期值time_t和struct tm类型的相互转换
  • 原文地址:https://www.cnblogs.com/cqming/p/11209496.html
Copyright © 2020-2023  润新知