`
qindongliang1922
  • 浏览: 2188538 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
7265517b-f87e-3137-b62c-5c6e30e26109
证道Lucene4
浏览量:117661
097be4a0-491e-39c0-89ff-3456fadf8262
证道Hadoop
浏览量:126069
41c37529-f6d8-32e4-8563-3b42b2712a50
证道shell编程
浏览量:60024
43832365-bc15-3f5d-b3cd-c9161722a70c
ELK修真
浏览量:71398
社区版块
存档分类
最新评论

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

阅读更多
转载请务必注明,原创地址,谢谢配合!
http://qindongliang1922.iteye.com/

上篇文章,散仙介绍了.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,变长格式的整形。


转载请务必注明,原创地址,谢谢配合!
http://qindongliang1922.iteye.com/
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics