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>
<li>
counter,segment文件的个数+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中往文件中写。