全文索引----中文进阶(一)

时间:2022-09-22 10:42:41

Lucene的索引文件格式

 

Lucene的索引里面存了些什么,如果存放的,也即Lucene的索引文件格式是读懂Lucene源代码的一把钥匙。

 

当我们真正进入到Lucene源代码之中的时候,我们会发现:

 

Lucene的索引过程,就是按照全文检索的基本过程,将倒排表写成此文件格式的过程。

 

Lucene的搜索过程,就是按照此文件格式将索引进去的信息读出来,然后计算每篇文档打分(score)的过程。

 

Lucene的索引结构是有层次结构的:

 

全文索引----中文进阶(一)

 

主要分以下几个层次:

 

1.索引(Index)

 

Lucene中一个索引是放在一个文件家中的,如上图,同一个文件夹中的所有文件构成一个Lucene索引

 

2.段(Segment)

 

一个索引可以包含多个段,段与段之间是独立的,添加新文档可以生成新的段,不同的段可以合并。

 

如上图,具有相同前缀文件的属同一个段,图*两个段"_0"和"_1"。

 

segments.gen 和 segments_5是段的元数据文件,也即它们保存了段的属性信息。

 

3.文档(Document)

 

文档是我们建索引的基本单位,不同的文档是保存在不同的段中的,一个段可以包含多篇文档。

 

新添加的文档是单独保存在一个新生成的段中,随着段的合并不同的文档合并到同一段中。

 

4.域(Field):

 

一篇文档包含不同类型的信息,可以分开索引,比如标题,时间,正文,作者等,都可以保存在不同的域里。

 

不同域的索引方式可以不同

 

词(Term):

 

词是索引的最小单位,是经过词法分析和语言处理后的字符串。

 

Lucene的索引结构中,既包含了正向信息,也保存了反向信息。