zoukankan      html  css  js  c++  java
  • Lucene:(一)建立索引文件:2。建立索引文件(一)

    写索引文件:

        索引文件在未合并前是有多个文件组成的,这些文件综合在一起,才为一个实质上的索引文件;这些文件拥有相同的名字,不同的是后缀名;下面,依次介绍这些文件,介绍方式为:从建立索引的类开始,一步步追踪,最后总结。

           IndexWriter类

           写索引文件从IndexWriter类开始。IndexWriter需要三个参数:分别是字典(Lucene自定义的,存放索引文件的虚拟目录),一个分词器和一个布尔变量(这个变量为重新建立索引或往原有的索引中添加,true为新建索引)。

        IndexWriter类创建索引是以一个一个文件作为单位来建立索引的,IndexWriter类通过addDocument函数将一个一个文件添加,并使用IndexWriter类将该文件添加到索引中。
    注:Lucene自己模拟了文件对象,该对象表示一个文件,为Document;addDocument函数的参数就是Document对象;

     IndexWriter的作用为建立索引和合并两部分。

     1。建立索引:

    IndexWriter使用SegmentInfos类写segment信息。
    Segment
    文件为Lucene索引文件中记录块信息的。块实际上包括多个文件的概述信息,这多个文件实际上就是建立这个索引文件的实际文件。


    IndexWriteraddDocument函数,调用DocumentWriter类,完成建立索引的余下操作。
    DocumentWriter类完成建立域信息文件,term信息文件等索引信息的建立。


    2。合并:
    Lucene有两种合并。


    第一种合并:
    IndexWriter
    类构造函数使用SegmentInfos类写索引文件的segment信息,其实并不是一开始就往硬盘上写,而是先往内存中写,到一定的数目合并写入硬盘。

    第二种合并:
    当索引文件(这里指硬盘上实际存在的索引文件)到一定的数目,这些索引文件合并;接着,循环这种合并。

    举例:这里假设合并因子为10。一个索引文件记载10个文件,当这样的文件有10个时,这些索引文件合并成一个100个文件的索引文件。接着,继续形成索引文件,又有10个记载10个文件的索引文件形成,这些文件合并成另一个100个文件的索引文件;当记载100个文件的索引文件有10个时,这些文件合并成记载1000个文件的索引文件;以下类推。



  • 相关阅读:
    python基础之数据类型
    简单猜年龄游戏
    python基础之变量
    Python3获取大量电影信息:调用API
    10分钟制作UWP汉堡菜单
    java 异常处理
    多态
    接口与继承
    数组及课后动手动脑
    String类型
  • 原文地址:https://www.cnblogs.com/wanghoney/p/1233668.html
Copyright © 2011-2022 走看看