浏览 1731 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2014-01-15
上篇文章,散仙介绍了段文件格式的组成以及结构,那么本篇呢,我们来分析下.fnm这个文件
这个文件存储的主要是域(Fileds)字段名,在索引文件中的后缀名为.fnm。 下面先来看下.fnm的数据类型。 Header--> CodecHeader FieldsCount-->VInt FieldName-->String FieldBits, DocValuesBits-->Byte FieldNumber-->VInt Attributes-->Map<String,String> DocValuesGen-->Int64 详细描述如下: FieldsCount:记录的是域名在当前文件的数量 FieldName:域名在文件中保存为UTF-8字符串 FieldNumber:字段的编号, FieldBits:一个字节包含字段的选项信息 (1)低阶位是1代表是索引字段,bit为0代表非索引(Indexs)字段 (2)第二个低阶位是1代表有向量存储,bit为0代表无向量(term vectors)存储 (3)第三个低阶位被设置成(0x4),offsets(偏移量)将会被存储在倒排链表里,除了位置信息 (4)第四个bit位从未被使用过 (5)第五个bit位被设置成(0x10),norm(加权基准)将会被忽略在索引字段里 (6)第六个bit位被设置成(0x20),payload(载荷)将会被被存储在索引字段里 (7)第七个bit位被设置成(0x40),term frequencies(词频) and positions(位置)将会在索引字段里被忽略 (8)第八个bit位被设置成(0x80),positions(位置)信息,将不会被忽略在索引字段里 DocValuesBits: 一个字节包含每个文档的值类型,这个被记录用2个4位字节的int类型,高阶位代表(norms)加权基准的选项, 低阶位代表DocValues的选项,每个4位字节的整数可以被解码: 0:代表这个字段没有存储DocVlues 1:数字类型的NumericDocValues 2:二进制类型的BinaryDocValues 3:排序类型的SortedDocValues DocValuesGen是字段的DocValues里面的数量,如果这个值为1,代表着 没有DocValues更新该字段,其他任何大于0的数字代表其被更新存储通过DocValuesFormat. Attributes:一个K-V映射的编码的属性存储。 DocValuesFormat:作用是为每个文档进行编码以及解码的工作,如果有自己定义的格式需要加入或扩展 可以继承改类,为了能够使段文件读取,必须需要定义格式名,这个方法使用的是JAVA的SPI进行定义的 ,在扩展的类里面必须有一个无参的构造函数以确保SPI可以解析。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |