Lucene4.3进阶开发之李代桃僵( 八)

Stella981
• 阅读 678

上篇文章,散仙介绍了段文件格式的组成以及结构,那么本篇呢,我们来分析下.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可以解析。

点赞
收藏
评论区
推荐文章
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Easter79 Easter79
3年前
springmvc之下载文件
springMVC下载文件在开发web项目时,我们经常会遇到下载文件的情况。我们下来看下面这个代码:publicvoiddownLoad(HttpServletResponseresponse,Stringfilename){if(filenull||!file.exis
Wesley13 Wesley13
3年前
SQL优化看这一篇就够了
MySQL索引1\.定义索引是帮助MySQL高效获取数据的数据结构。索引内部存在一个键值和对应数据的物理地址,当数据很多的时候,索引文件会很大,所以一般以文件的形式存储于磁盘中,后缀名为.myi。2\.常用索引类型聚集索引次要索引覆盖索引
Souleigh ✨ Souleigh ✨
3年前
前端性能优化 - 雅虎军规
无论是在工作中,还是在面试中,web前端性能的优化都是很重要的,那么我们进行优化需要从哪些方面入手呢?可以遵循雅虎的前端优化35条军规,这样对于优化有一个比较清晰的方向.35条军规1.尽量减少HTTP请求个数——须权衡2.使用CDN(内容分发网络)3.为文件头指定Expires或CacheControl,使内容具有缓存性。4.避免空的
Easter79 Easter79
3年前
swiftUi propertWrapper 自定义标记属性
上篇文章我们知道@Status 的作用了那么我们也可以自己定义类似的这种标签。。首先我们先来看下不使用属性标签,向导页面如何写////PropertyWrapperView.swift//learn_swiftUi////Createdbyliuanon2020/9/4.
Wesley13 Wesley13
3年前
FLV文件格式
1.        FLV文件对齐方式FLV文件以大端对齐方式存放多字节整型。如存放数字无符号16位的数字300(0x012C),那么在FLV文件中存放的顺序是:|0x01|0x2C|。如果是无符号32位数字300(0x0000012C),那么在FLV文件中的存放顺序是:|0x00|0x00|0x00|0x01|0x2C。2.  
Stella981 Stella981
3年前
Spring + SpringMvc + Spring Data Jpa框架整合
文章内容输出来源:拉勾教育Java高薪训练营SpringSpringMvcSpringDataJpa框架整合本篇博客,我们来说下spring整合springmvc和springdatajpa的整个过程先来看下项目结构我把配置文件拆分为s
Wesley13 Wesley13
3年前
ELF文件结构描述
ELF目标文件格式最前部ELF文件头(ELFHeader),它包含了描述了整个文件的基本属性,比如ELF文件版本、目标机器型号、程序入口地址等。其中ELF文件与段有关的重要结构就是段表(SectionHeaderTable)ELF文件格式1.可重定向文件:文件保存着代码和适当的数据,用来和其他的目标文件一起来创
Stella981 Stella981
3年前
CoreOS实践指南(八):Unit文件详解
在系列前面的内容里,我们已经介绍了使用Unit文件配置Systemd管理的系统服务的方式,以及CoreOS的Fleet工具继承并扩展了这种文件格式,使得它更加适用于集群环境的服务配置。由于Unit文件本身包罗万象,且属于相对进阶的内容,在系列前面的部分的文章中,都并没有很详细的讲解Unit文件具体的格式和可用的参数。而事实上,这部分的