Lucene源码解析--索引结构

索引是一系列document的集合,document是一系列field的集合,filed是一系列term的集合,term是一系列bytes的集合,同一个bytes序列,在不同的field中被认为是不同的term;因此term由一对值组成:field name(string)和field value(bytes).
一个索引由多个子索引即段(segments)组成,段是一个完全独立的索引,将会被单独搜索。



     Lucene通过一个整型的文档编码来关联文档(document),第一个文档的编码为0,其他文档的编码依次递增。文档的编码可能会变更因此在lucene之外存储这些编码的时候要格外小心。

文档编码通常在以下情况下会发生变更:
1.每个段中的文档编码是唯一的,但在一个大的上下文中文档编码必须进行转换。一个标准的做法是每个段建立的时候分配一个编码的范围。比如有两个段,每个段中有5个document;那么第一个段中编码起始值则为0,第二个则为5.

2.当文档被删除时,文档的编码就会产生空缺。这些空缺最终会在索引的合并过程中消失。

索引结构概览:
bb
1.段信息:有关段的元数据,比如文档的个数及文件的类型。

2.域名称 :索引中所包含域名称的集合。

3.存储的域值:比如文档的标题,url等信息

4.分词字典(Term dictionary): 包含所有文档中的索引域的字典,字典中也包含分词所在文档的个数,以及分词出现的频率

5.分词频率数据(Term Frequency data):包含某个分词的文档数,以及该分词在每个文档中出现的频率。

6.分词指针数据:记录字典中每个分词在文档中的出现位置。

7.规范化因子:存储文档中每个域的打分情况。

8.分词向量:保存分词的文本信息和频率。

9.per-document values;

10.已删除的文档:跟踪被删除的document信息。

索引文件命名:
具有相同文件名的文件属于同一个段。所有的段存储在同一个目录下。

1.segments file:  segments.gen,segments_N  存储提交点的相关信息

2.Lock File: write.lock  防止多个IndexWriter操作同一个文件

3.Compound File: .cfs,.cfe  一个可选的虚拟文件,由文件句柄经常被用尽的其他索引文件组成。

4. Fields .fnm  存储有关域的相关信息

5.Field Index .fdx 指向与数据的指针

6.Field Data .fdt  存储文档中的域数据

Term Dictionary .tim  保存分词相关信息

Term Index .tip  分词字典索引

Frequencies .doc 包含分词频率的文档列表

Positions .pos 分词在索引中的位置信息

Payloads .pay 字符偏移量和权重信息

Norms .nvd, .nvm Encodes length and boost factors for docs and fields

Per-Document Values .dvd, .dvm Encodes additional scoring factors or other per-document information.

Term Vector Index .tvx Stores offset into the document data file

Term Vector Documents .tvd Contains information about each document that has term vectors
 
Term Vector Fields .tvf The field level info about term vectors

Deleted Documents .del Info about what files are deleted

bb

fj.pngsm.jpg

fj.pngar.jpg

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28624388/viewspace-766026/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/28624388/viewspace-766026/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值