上篇,散仙在修真篇之九里面,介绍了Lucene里面全部的文件格式以及的做用,那么接下来的一系列文章里,将逐个细说,今天咱们先来看下lucene索引文件格式里面的老大段文件,以.gen ,.si为后缀名的文件。工具
.si是记录段文件的元数据的信息,主要有以下的几个属性 编码
1,SegVersion段的版本号,是段文件建立时的编码版本。 spa
2,SegSize是指包含在这个段文件里文档数(Document)的总数 操作系统
3,IsCompoundFile记录着这个段在写入时,是否被做为一个复合索引文件, code
若是是-1的话,则为正常的段索引文件,为1的话就是复合索引文件 orm
4,Checksum,检验和,包含全部段文件中的全部字节的CRC32 checksum, 索引
一般用于验证索引文件的完整性。 文档
5,Diagnostics,诊断映射,它会私下被IndexWriter写入记录,做为一个Debug时的一个辅助工具,每一个段文件都有一个对应的诊断映射,它包含一些元数据,包括一些lucene当前的版本号,操做系统,Java版本,以及它是怎么被建立的,是合并(merge),仍是被刷新(flush),仍是被多个索引合并(addindex) it
6,Attributes,codec-private属性的键-值映射。 io
7,对于这个段来讲,它被组成由多个文件
SegmentInfos这个类,几乎涵盖了段文件里全部的详细信息,提供了大量的方法用于在文件系统上操做段文件,segments_N每每是最活跃的文件,由于最新的段文件,经常面临着频繁的添加操做,这个文件包含了每一个段的名字和细节编解码器和一些删除的元数据信息。
另一个文件segments.gen,这个文件包含了以_N开头的在当前的段文件的记录,
这个文件仅仅做为一个备份,以防Directy不能准确的定位所写入的当前段文件是那一些以_N开头的,一般仅包含一个int32位的header信息。
文件:
segments.gen: GenHeader, Generation, Generation
segments_N: Header, Version, NameCounter, SegCount, <SegName, SegCodec, DelGen, DeletionCount, FieldInfosGen, UpdatesFiles>SegCount, CommitUserData, Checksum
数据类型:
Header---->CodecHeader
GenHeader, NameCounter, SegCount, DeletionCount --> Int32
Generation, Version, DelGen, Checksum, FieldInfosGen --> Int64
SegName, SegCodec --> String
CommitUserData --> Map<String,String>
UpdatesFiles --> Set<String>
介绍:
Version数量,记录着这个索引全部被添加或删除文档的个数。
NameCounter ,一般用于生成新的段文件名称
SegName ,段名称,一般被用于全部组成段文件的前缀名称
DelGen ,记录着全部段删除文件的数量,若是这个数是-1,则意味
着没有删除任何记录,除此以外,任何一个大于0的数字,则意味着
索引已经经过LiveDocsFormat进行了删除存储
DeletionCount,记录某一个段删除文档的数量
Checksum,校验和,上文有描述
SegCodec,是段文件的编码和解码后的名称
CommitUserData,用来提交一个用户提供不透明的Map结构的数据
FieldInfosGen ,域信息文件,记录段更新的次数,-1无更新,大于0的数字
则表明这更新的次数。
UpdatesFiles,存储在段过被更新过的文件。