Lucene4.3进阶开发之李代桃僵( 八)
程序员文章站
2022-05-17 09:31:21
...
转载请务必注明,原创地址,谢谢配合!
http://qindongliang1922.iteye.com/
上篇文章,散仙介绍了段文件格式的组成以及结构,那么本篇呢,我们来分析下.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可以解析。
转载请务必注明,原创地址,谢谢配合!
http://qindongliang1922.iteye.com/
http://qindongliang1922.iteye.com/
上篇文章,散仙介绍了段文件格式的组成以及结构,那么本篇呢,我们来分析下.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可以解析。
转载请务必注明,原创地址,谢谢配合!
http://qindongliang1922.iteye.com/
推荐阅读
-
.NET开发框架(八)-服务器集群之网络负载平衡演示(视频)
-
H5混合开发进阶之inspect调试
-
HTML5游戏开发进阶篇之单位智能移动实现教程
-
从0到1——八年阿里Python开发工程师的进阶之路
-
IOS开发教程第一季之UI进阶day2合并IOS学习013--App启动过程、多控制器管理
-
HTML5游戏开发进阶之加入单位的代码教程
-
IOS开发教程第一季之UI进阶day8合并IOS学习019--敲击、长按、轻扫、旋转,CALayer、锚点,CADisolayLink刷新,核心动画,关键帧动画,组动画,转场动画,画板案例
-
《BREW进阶与精通——3G移动增值业务的运营、定制与开发》连载之8---Symbian,Windows Mobile,Palm,Linux,J2ME
-
Java进阶篇设计模式之八 ----- 责任链模式和命令模式
-
mysql 开发进阶篇系列 38 mysql日志之错误日志log-error