边学边记(七) lucene索引结构四(_N.fdx,_N.fdt)

(_N.fdx,_N.fdt)

FieldData信息存储在_N.fdt文件中

Field的index信息存储在_N.fdx文件中

根据fdx文件中的存储的field 数据的指针在fdt文件中查找对应的field的数据

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

FieldValuesPosition --> Uint64

fdx文件存储了N个指针信息 N代表此段中所存储的document的数量,指针的值是一个long类型的数据

根据测试数据中创建的两个doc 此文件应该保存了 两个long值

 

在lucene2.9以后 fdx文件保存了format version信息,lucene写入fdx fdt文件的逻辑可以参看

org.apache.lucene.index.FieldsWriter 类和org.apache.lucene.index.FieldInfos类

fdt和fdx文件的header部分都写入了一个int类型的version信息

 

那么fdx文件的大小应该是4+N*8 N代表此段中保存的document的个数

 

读取fdx文件的内容如下:

读取结果:

Index File Format Version:2
The Document[0]'s position in fdt file is:4
The Document[1]'s position in fdt file is:43

查看fdt文件内容前 读下lucene的写入逻辑 比看文档解释应该清楚很多

 

读取的代码:

ftd文件的格式:

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

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

FieldCount --> VInt

FieldNum --> VInt

Bits --> Byte

 

 

 

读取第一个doc的信息:

 

运行结果:

doc's stored field count is :2
fieldnumber:0  fnm文件中保存的field信息中的第0个field
field's policy:1 分词存储的title
field value:百度搜索
fieldnumber:1 fnm文件中保存的field信息中的第1个field
field's policy:0 只是存储了url信息并未进行分词
field value:http://www.baidu.com

 

lucene在制定了doc的索引以后是很容易取到整个doc的信息的 所以在查询的时候lucene的result集合返回的都是结果集中的doc的编号

通过reader读取制定编号的文档

 

 

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/a276202460/article/details/5650026
个人分类: Lucene
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭