Lucene4.3进阶开发之亢龙有悔( 九)

上篇文章,散仙介绍了.fnm的索引文件格式的具体结构及数据类型,那么本篇呢,将介绍另外两种格式.fdx和fdt。 

Stored Field values,代表着存储字段的具体的值,对于在索引里的每一个文档(Document),本质上都是存储着一系列的基于属性名和值的K-V段,其实也就是字段的名和字段的值,这一点和大多数NOSQL的存储格式是非常相似的,都是非常灵活松散的。 

存储的字段一般都是关于这个文档的辅助信息,例如:它的标题,URL,或一个标识符是否访问数据库,另外需要在搜索时并取出值的字段,是必须存储的,如果这个字段不是必须存储的,但是检索时却需要被检索,那么在索引时,可以设置索引,不存储,因为索引的大小会影响检索的效率,所以尽量不要浪费索引存储的空间。 

存储的字段(Stored Fields)有2个核心的文件。 

1,索引字段的数据在.fdx的文件里。 

索引通常用于检索特定的文档在字段里,索引里包含一个固定长度的数据使这个文件更加容易的支持随机访问,文档的位置存储在8位的文件里。 

每个索引文档都包含一个它对应的存储数据的指针,以便于能够更加快速检索。 

FieldIndex (.fdx) --> <Header>, <FieldValuesPosition> SegSize 

Header --> CodecHeader 

FieldValuesPosition --> Uint64 

2,字段存储的数据在.fdt的文件里 

每个存储的字段都包含如下信息: 

FieldData (.fdt) --> <Header>, <DocFieldData> SegSize 

Header --> CodecHeader 

DocFieldData --> FieldCount, <FieldNum, Bits, Value> FieldCount 

FieldCount --> VInt 

FieldNum --> VInt 

Bits --> Byte 

(1)第一个bit位被保留 

(2)第二个是一个包含着二进制数据的字段 

(3)第三个bit位被保留 

(4)第四至第六位,(mask: 0x7<<3)定义一个数字类型的字段 

     如果没有数字字段存储,所有的bit位将被清除 

     1<<3: 值是一个int类型 

     2<<3: 值是一个Long类型 

     3<<3: 值是一个Float类型 

     4<<3: 值是一个Double类型 

Value 存储的类型可以是字符串,二进制类型,整形,长整型(依赖bit) 

BinaryValue   字节类型的存储 

ValueSize     VInt,变长格式的整形。


转载于:https://my.oschina.net/heroShane/blog/201966

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值