Lucene:(一)建立索引文件:2。建立索引文件(二)Segment文件

Segment文件:

在随笔“Lucene:(一)建立索引文件:2。建立索引文件(一)”中提到,写索引文件从IndexWriter类开始;而IndexWriter类写索引可以看成两个方面,其中之一为IndexWriter使用SegmentInfos类写segment文件。

Segment文件实际可以看成索引的概述文件,包括了所有用于建立索引的文件的概述信息。Segment类,即Segment文件中记载的信息单元。可以理解成,SegmentInfos将众多segment信息综述在一起,写入文件。

 

1.SegmentInfo类:

public String name;  //segment文件的名称(记录其他信息的文件与它同名)

public int docCount; //segment文件中的拥有的文件数目,即该索引文件记录的文件数目

public Directory dir;// segment文件存放的字典

 

2.SegmentInfos类:

SegmentInfos类,用于读写块信息,物理磁盘中的块文件的后缀名为segments

:wanghoney. segments;

 

块文件的格式如下:

<ul>

    <li>Format,索引文件的版本,Lucene有多个版本了,int</li>

<li>version,多久前索引文件被adding or deleting文件,long</li>

<li>

countersegment文件的个数+1,因为segment的建立是从1开始,没多出现一个,命名就为前一个的名字加1,所以counter可看成是下一个segment文件应起的名字,int

</li>

<ul>每个segment文件的信息,共有counter-1

   <li>segmentInfo中的name</li>

   <li> segmentInfo中的docCount </li>

</ul>

</ul>

 

注意:并不是每个版本的segment文件都有format,version等信息的,早先版本没有。

 

实现:

SegmentInfos继承于Vector类,因此它有Vector的特性;SegmentInfos类,其实将SegmentInfos类操作的所有SegmentInfo信息装入Vector;读是从文件中读入SegmentInfo中,再装入到Vector中;写是从Vector中往文件中写。

原文地址:https://www.cnblogs.com/wanghoney/p/1237757.html