fdt文件,以正排的方式, 存储了field的原始真实数据. 也就是说, 你添加到所有中的所有field内容. 都会存储在此文件中.
其中. 对于每一个chunk. 首先会存储一个 ChunkHeader:
其中包括:
docBase : 当前chunk里的第一个docID.
numBufferedDocs slice . 当前块里面缓冲了多少个doc, 可以根据docBase及num来算出每一个docId. 还以bit的方式存储了当前chunk是否分片.
存储每个文档有多少个field. (数组)
存储每个文档的field信息长度(字节长度) (数组)
之后,会将当前chunk的所有field信息进行压缩存储.
其中依次罗列了所有的doc, 每个doc中罗列了所有的field.
field信息中, 存储了:
FieldNumberAndType: field的编号及类型
Value: 实际的值, 根据不同类型(int,long,string,bytes等),存储方法不同.