博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
fnm的索引文件格式的具体结构及数据类型
阅读量:4189 次
发布时间:2019-05-26

本文共 1082 字,大约阅读时间需要 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,变长格式的整形。

转载地址:http://ggjoi.baihongyu.com/

你可能感兴趣的文章
SearchRequestBuilder常用方法说明
查看>>
为什么有的程序员的代码结构混乱
查看>>
查看数据库
查看>>
SQLite 数据库
查看>>
行业应用
查看>>
工作的常识
查看>>
java里面获取map的key和value的方法
查看>>
积累20180203
查看>>
MySQL里获取当前week、month、quarter的start_date/end_date
查看>>
Mysql中DATE_SUB 使用方法结合查询一天内,一周内,一月内的信息实例讲解
查看>>
异构数据源海量数据交换工具-Taobao DataX 下载和使用
查看>>
代理模式解析,静态代理、动态代理一文全都告诉你
查看>>
我是如何从电脑小白走上编程之路
查看>>
想成为优秀的Java程序员,你需要读哪些书?
查看>>
Java并发| Atomic包下的原子操作类使用与原理解析
查看>>
Mac M1 安装 iTerm2+Oh My Zsh+zsh-syntax-highlighting 真香!
查看>>
M1芯片Mac 安装git
查看>>
M1芯片Mac Homebrew 安装
查看>>
一篇文章看懂ZooKeeper内部原理
查看>>
全面理解Java内存模型
查看>>