fnm

  索引文件.fnm用来描述域信息(FieldInfo)

例子

  为了便于介绍.fnm中的各个字段,给出下面的例子

图1:

fnm文件的数据结构

图2:

FieldsCount

  FieldsCount描述的是.fnm中域的种类。

Field

图3:

FieldName

  该字段描述的是域名,例如图1中的"author"、"content"、"abc"都是FieldName。

FieldNumber

  域的编号,根据处理域的先后顺序,每个域都会获得一个从0开始递增的域的编号。

FieldBits

  该字段是一个组合值,它用来描述当前域是否有以下的属性:

  在图1中,域"content"的FieldBits的值为 (0x1 | 0x2 | 0x4) = 0x0111。

IndexOptions

  该字段描述了当前域的索引选项(IndexOptions),IndexOptions有以下值,每个选项的含义在两阶段生成索引文件之第一阶段已介绍,不赘述:

DocValuesBits

  该字段占用一个字节,其中高4个bit用来描述是否记录norm,低4个bit用来描述DocValues类型,DocValues的类型包括以下类型,在DocValues对每一种都已介绍,不赘述:

DocValuesGen

  该字段描述了DocValues类型的域的更新状态,比如我们调用IndexWriter.updateDocValues(...)方法后,那么DocValuesGen的值会变更,这里不展开介绍,在介绍IndexWriter时会详细介绍。

Attributes

  该字段描述了存储当前域的索引文件的格式(format),比如说当前是一个DocValues的域,那么Attributes的字段会有下面的值:

  表示使用Lucene70这种格式来生成索引文件.dvd、.dvm

DimensionCount

  该字段描述的是如果域为点数据类型,那么DimensionCount的值为点数据的维度,点数据以及维度的概念在Bkd-Tree以及索引文件之dim&&dii介绍不赘述,在图1中,IntPoint域即为点数据域,DimensionCount的值为3,因为有3,5,9共三个值。

DimensionNumBytes

  该字段描述的是每一个维度占用的字节个数(数值类型被编码为多个字节),同样已经在前面的文章中介绍了。

fnm文件的总数据结构

图4:

点击下载Markdown文档