`

三、索引建立步骤

 
阅读更多

索引建立步骤


1、创建Directory

Directory directory = FSDirectory.open(new File("D:/test/index01"));

 

2、创建Writer

IndexWriter writer = new IndexWriter(directory, new IndexWriterConfig(Version.LUCENE_35,new StandardAnalyzer(Version.LUCENE_35)));

 

3、创建文档并且添加索引


            文档和域的概念很重要
            文档相当于表中的每一条记录,域相当于表中每一个字段


            Document document = null;
        
            Collection<File> files = FileUtils.listFiles(new File("D:/test/lucene"),FileFileFilter.FILE, null);
            for (File file : files) {
                document = new Document();
                document.add (new Field ("content ", new FileReader(file)));

                   //域名可以重复使用,在 使用 的时候 这样取出,doc.getValues("content")[1]

                   document.add (new Field ("content ", "可以再次放置一些内容");
                document.add(new Field("filename", file.getName(), Field.Store.YES, Field.Index.NOT_ANALYZED));
                document.add(new Field("path", file.getAbsolutePath(), Field.Store.YES,Field.Index.NOT_ANALYZED));//是否存储路径,是否进行分词
               
                writer.addDocument (document);
            }

4、查询索引的基本信息


            IndexReader reader = IndexReader.open(directory);
            //通过reader可以有效的获取到文档的数量
            System.out.println("numDocs:" + reader.numDocs() );//可以使用的文档数量
            System.out.println("maxDocs:" + reader.maxDoc() );//所有的文档数量,包括被删除的文档
            System.out.println("deleteDocs:" + reader.numDeletedDocs() );//被删除的文档数量

            reader.close();
      

5、删除索引

//参数是一个选项,可以是一个Query,也可以是一个term,term是一个精确查找的值
//此时删除的文档并不会被完全删除,而是存储在一个回收站中的,可以恢复

writer.deleteDocuments (new Term ("id", "1"));
writer.commit();


6、恢复删除

      try {
           
IndexReader reader = IndexReader.open(directory, false);
            //恢复时,必须把IndexReader的只读(readOnly)设置为false
            reader.undeleteAll ();
            reader.close();


7、强制删除,相当于删除回收站里面的,彻底删除了

writer = new IndexWriter(directory, new IndexWriterConfig(Version.LUCENE_35, new StandardAnalyzer(Version.LUCENE_35)));
writer.forceMergeDeletes ();


8、优化和合并索引

writer = new IndexWriter(directory, new IndexWriterConfig(Version.LUCENE_35, new StandardAnalyzer(Version.LUCENE_35)));
//会将索引合并为2段,这两段中的被删除的数据会被清空
//特别注意:此处Lucene在3.5之后不建议使用,因为会消耗大量的开销,

//Lucene会根据情况自动处理的
writer.forceMerge (2);


9、更新索引

            writer = new IndexWriter(directory, new IndexWriterConfig(Version.LUCENE_35,
                new StandardAnalyzer(Version.LUCENE_35)));
            /*
             * Lucene并没有提供更新,这里的更新操作其实是如下两个操作的合集
             * 先删除之后再添加
             */

            Document doc = new Document();
            doc.add(new Field("id", "11", Field.Store.YES, Field.Index.NOT_ANALYZED_NO_NORMS));
            doc.add(new Field("email", emails[0], Field.Store.YES, Field.Index.NOT_ANALYZED));
            doc.add(new Field("content", contents[0], Field.Store.NO, Field.Index.ANALYZED));
            doc .add(new Field("name", names[0], Field.Store.YES, Field.Index.NOT_ANALYZED_NO_NORMS));
            writer.updateDocument(new Term("id", "1"), doc);

            //会把原来id=1的那个文档删掉,新增id=11的那个文档

分享到:
评论

相关推荐

    Lucene创建索引步骤

    Lucene创建索引步骤: 1、创建Directory(索引位置) 2、创建IndexWrite(写入索引) 3、创建Document对象 4、为Document添加Field(相当于添加属性:类似于表与字段的关系) 5、通过IndexWriter添加文档到索引中

    oracle在线创建索引和重组索引

    下面我们将详细介绍在线创建索引和重组索引的步骤和注意事项。 一、在线创建索引 在线创建索引可以提高查询性能,但是需要评估该索引的必要性和可能对现有语句的影响。如果不是紧急的大索引,最好在维护时间操作。...

    文件索引的创建 文件索引的创建 文件索引的创建

    创建文件索引的过程通常包括以下步骤: 1. **分析数据**:首先,系统会分析文件内容,确定哪些字段适合用于建立索引。这些字段通常是频繁查询的或者对性能影响较大的。 2. **选择索引类型**:根据数据特性和需求,...

    SQLSERVER中建索引的步骤[参照].pdf

    SQL SERVER 中建立索引的步骤 在 SQL SERVER 中,建立索引是一个非常重要的步骤,它可以大大提高数据库的查询效率。索引可以被看作是一个目录,帮助计算机快速地读取到我们查询的数据。在实际操作中,我们可以通过...

    视图和索引的创建和使用实验报告.pdf

    本实验报告总结了视图和索引的创建、修改、使用等知识点,并结合实验步骤和结果,展示了视图和索引在数据库管理系统中的应用。 实验结论 通过本实验,我们掌握了视图和索引的创建、修改、使用等技能,了解了视图和...

    Lucene3.0创建索引

    根据提供的描述,创建索引的主要步骤包括: 1. **指定源目录**:首先确定要索引的文本文件所在的位置。 2. **设置目标索引目录**:定义存放生成索引文件的路径。 3. **初始化`IndexWriter`对象**:用于控制索引的...

    SDE三级索引设置程序

    总的来说,理解和应用"SDE三级索引设置程序"是提升GIS应用程序性能的关键步骤,特别是在处理大量空间数据时。通过有效地利用索引,可以显著减少查询时间,提高用户体验,并减轻服务器负载。对于ArcGIS Engine的...

    Oracle为sdo_geometry创建空间索引

    Oracle 中创建空间索引的实现步骤和注意事项 空间索引是 Oracle 中的一种特殊索引类型,用于加速空间数据的查询和检索。空间索引可以大大提高空间数据的查询效率,特别是在处理大量空间数据时。本文将详细介绍如何...

    实 验 三 索引及数据操作

    ### 实验三:索引及数据操作 #### 实验目的 本实验旨在通过实践操作让学生熟练掌握...通过完成上述实验步骤,学生可以全面了解索引的创建和删除、SQL语句的应用以及数据的操作方法,为今后的学习打下坚实的基础。

    Oracle在线建立超大表的索引

    ### Oracle在线建立超大表的索引 #### 需求背景 在Oracle数据库中,为含有千万级别记录的大表创建索引是一项挑战性任务,尤其是对于那些处于高并发在线生产环境中的表。本文将详细介绍如何为一个核心大表(INFO_...

    oracle创建表创建唯一索引

    在Oracle数据库管理系统中,创建表和唯一索引是数据库设计中的关键步骤,它们对于数据的组织、查询效率和数据完整性至关重要。以下将详细介绍如何创建学员信息表,创建唯一索引,以及如何修改表来添加主键和检查约束...

    创建数据库表与索引实验.docx

    ### 创建数据库表与索引实验知识点总结 #### 一、实验背景与目标 **实验标题:** 创建数据库表与索引实验 **实验描述:** 本次实验旨在让学生掌握如何在数据库中创建表和索引,同时理解并实践数据完整性的重要性...

    [Oracle]如何在亿级记录表中创建索引

    #### 三、创建索引的策略与步骤 基于上述信息,我们可以制定出创建索引的具体策略。 1. **确定索引列**:选择频繁出现在查询条件中的列作为索引候选。 2. **评估索引类型**:根据表的特性决定是创建B树索引还是其他...

    lucene 对 xml建立索引

    本文将详细介绍如何利用Lucene对XML文档进行索引建立的过程,并通过示例代码具体阐述其实现方法。 #### 二、基础知识 1. **Lucene简介** - Lucene是一个开源的全文搜索引擎库,能够帮助开发者构建应用程序内的搜索...

    SuperMap Objects Java 6R创建字段索引

    通过API提供的方法,你可以列举出数据表的所有字段,并判断哪些字段适合建立索引。通常,那些经常用于查询条件的字段,例如ID、时间戳或地理位置等,是创建索引的理想选择。 接下来,我们来看如何创建字段索引。在...

    SuperMap Objects .NET 创建字段索引

    创建字段索引的过程通常包括以下步骤: 1. **初始化工作环境**:首先,你需要导入SuperMap Objects .NET的相关库,并实例化必要的对象,如Workspace、Dataset、Table等,这将为你提供与数据交互的基础。 2. **选择...

    ArcGIS教程:创建格网索引要素

    #### 三、创建格网索引要素的步骤详解 1. **启动ArcGIS软件**:首先需要打开ArcGIS软件,并确保已加载相关地图数据。 2. **打开格网索引要素地理处理工具**:可以通过搜索或在工具箱中找到该工具。 3. **指定输出...

    lucene索引优化多线程多目录创建索引

    本教程主要探讨的是如何利用Lucene进行索引优化,特别是通过多线程和处理多个目录来提高索引创建效率。 首先,我们需要理解Lucene的索引原理。Lucene将文档分解为词项(tokens),并对每个词项创建倒排索引。倒排...

    postgresql和oracle创建空间索引

    在PostgreSQL和Oracle中创建空间索引是管理和优化地理空间数据的关键步骤。通过使用GIST或MDSYS.SPATIAL_INDEX这样的专用索引类型,可以极大地提升查询性能,尤其是在处理大规模空间数据集时。理解这些索引的创建...

Global site tag (gtag.js) - Google Analytics