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

    在随笔“Lucene:(一)建立索引文件:2。建立索引文件(一)”中提到,写索引文件从IndexWriter类开始;而IndexWriter类写索引可以看成两个方面,其中之一为IndexWriter使用SegmentInfos类写segment文件(上文介绍),另一个就是调用DocumentWriter完成写索引文件的余下工作。

    DocumentWriter类也不是一次将剩下的所有索引文件写完,它包括使用FieldInfos类写fnm文件,使用TermInfosWriter类写tistii文件,使用TermVectorsWriter类写vector文件,写frqprx文件等等。下面依次介绍:

     

    1.    DocumentWriter使用FiledInfos类写field信息,fnm文件。Field信息,以后在介绍FieldInfos时在详细介绍,这里只要了解有这个文件的形成就可以。

    2.     

    DocumentWriter使用分词器将Document的各个Field切割成term(所谓的词),同时记载该term的位置等信息(分词器帮忙),包括该term所属的field, term的词组表示, termfield中出现的position, term与上个词比较的不同(以后介绍,term与上个term比较这一概念)。

     

    分词同时,将这些term和相关信息装入一张表中;分词结束后,对这张表进行排序,做到后面的term比小于前面的。这里要提到,term之间的不同有两点,一是term的词组表示,二是term所属的field

     

    调用TermInfosWriter类和TermVectorsWriter类,将这个词表中的term写入相关的几个term信息文件。

     

    termfrqprx文件:frq文件表示term项频数,每个term出现的文档的列表和对应中出现的次; .prx文件包含了某文档中某项出现的位置信息的列表。格式如下:

    Frq文件:<TermFreqs>TermCount

    TermFreqs <TermFreq>DocFreq
    TermFreq
    DocDelta, Freq

    TermFreqs序列按照项来排序(依据于.tis文件中的项,即项是隐含存在的)。
    prx
    文件:
    <TermPositions>TermCount
    TermPositions --> <Positions>DocFreq
    Positions --> <PositionDelta>Freq


    这里因为没写到合并,所以暂且格式是如下的,给源程序:

    Frq的形式:

    if (postingFreq == 1)                 // optimize freq=1

    freq.writeVInt(1);            // set low bit of doc num.

    Else

    {

    freq.writeVInt(0);            // the document number

        freq.writeVInt(postingFreq);            // frequency in doc

    }

    Prx的形式:

         for (int j = 0; j < postingFreq; j++)

     {        // use delta-encoding

              int position = positions[j];

              prox.writeVInt(position - lastPosition);

              lastPosition = position;

        }

  • 相关阅读:
    Project2016下载安装密钥激活教程破解
    关于 Level 和 Promotion,其实就那么简单
    Docker 入门
    Spring Cloud Config中文文档
    如何合理设置线程池大小
    java中线程池的使用
    快速掌握和使用Flyway
    duilib教程之duilib入门简明教程6.XML配置界面
    duilib教程之duilib入门简明教程5.自绘标题栏
    duilib教程之duilib入门简明教程4.响应按钮事件
  • 原文地址:https://www.cnblogs.com/wanghoney/p/1239567.html
Copyright © 2011-2022 走看看