Annotated Lucene:第三节 索引文件结构(3)
3.2.3.2 Field数据(.fdx和.fdt)
存储的fields(stored fields)通过两个文件来呈现(represented by two files),即field索引文件(.fdx)和field数据文件(.fdt)。
|
文件 |
包含的项 |
父项 |
数目 |
类型 |
版本 |
描述 |
|
Fields Index (.fdx) 对每个文档来说,存储指向它的fields数据的指针(pointer) |
FieldValuesPosition |
|
SegSize |
UInt64 |
|
用于找详细文档(a particular document)的所有fields的field数据文件中的位置(position),因为它包含的(contains)是固定长度的数据(fixed-length data),这个文件可以很容易地进行随机访问(randomly accessed)。 |
|
|
文档n的field数据的位置是在该文件中n*8的位置中(UInt64类型)。 |
|||||
|
Fields Data (.fdt) 这个文件存储每个文档的field数据 |
DocFieldData |
|
SegSize |
|
|
|
|
FieldCount |
DocFieldData |
1 |
VInt |
|
|
|
|
FieldNum |
DocFieldData |
FieldCount |
VInt |
|
|
|
|
Bits |
DocFieldData |
FieldCount |
Byte |
<=1.4 |
只有最低阶的bit位(low-order bits of Bits)被使用,值为1表示tokenized field(分解过的field),0表示non-tokenized field。 |
|
|
Byte |
>=1.9 |
最低阶的bit位表示tokenized field |
||||
|
>=1.9 |
第二个bit(second bit)用于表示该field存储binary数据。 |
|||||
|
>=1.9 |
第三个bit(third bit)表示该field的压缩选项被开启(field with compression enabled),如果压缩选项开启,采用的压缩算法(algorithm)是ZLIB |
|||||
|
Value |
DocFieldData |
FieldCount |
String |
<=1.4 |
|
|
|
String | BinaryValue |
>=1.9 |
依赖于Bits的值 |
||||
|
BinaryValue |
>=1.9 |
ValueSize,<Byte>^ValueSize |
||||
|
ValueSize |
Value |
1 |
VInt |
>=1.9 |
|
结构如下图所示:
