lucene索引文件结构分析在分析lucene的索引文件结构之前,我们先要理解反向索引(invertedindex)这个概念,反向索引是一种以索引项为中心来组织文档的方式,每个索引项指向一个文档序列,
lucene 索引文件结构分析
在分析 lucene 的索引文件结构之前,我们先要理解反向索引(inverted index)这个概念,反向索引是一种以索引项为中心来组织文档的方式,每个索引项指向一个文档序列,这个序列中的文档都包含该索引项。相反,在正向索引中,文档占据了中心的位置,每个文档指向了一个它所包含的索引项的序列。你可以利用反向索引轻松的找到那些文档包含了特定的索引项。lucene正是使用了反向索引作为其基本的索引结构。
索引文件的逻辑视图
在lucene 中有索引块的概念,每个索引块包含了一定数目的文档。我们能够对单独的索引块进行检索。图 2 显示了 lucene 索引结构的逻辑视图。索引块的个数由索引的文档的总数以及每个索引块所能包含的最大文档数来决定。
图2:索引文件的逻辑视图
lucene 中的关键索引文件
下面的部分将会分析lucene中的主要的索引文件,可能分析有些索引文件的时候没有包含文件的所有的字段,但不会影响到对索引文件的理解。
1.索引块文件
这个文件包含了索引中的索引块信息,这个文件包含了每个索引块的名字以及大小等信息。表 2 显示了这个文件的结构信息。
表2:索引块文件结构
2.域信息文件
我们知道,索引中的文档由一个或者多个域组成,这个文件包含了每个索引块中的域的信息。表 3 显示了这个文件的结构。
表3:域信息文件结构
3.索引项信息文件
这是索引文件里面最核心的一个文件,它存储了所有的索引项的值以及相关信息,并且以索引项来排序。表 4 显示了这个文件的结构。
表4:索引项信息文件结构
4.频率文件
这个文件包含了包含索引项的文档的列表,以及索引项在每个文档中出现的频率信息。如果lucene在索引项信息文件中发现有索引项和搜索词相匹配。那么 lucene 就会在频率文件中找有哪些文件包含了该索引项。表5显示了这个文件的一个大致的结构,并没有包含这个文件的所有字段。
表5:频率文件的结构
5.位置文件
这个文件包含了索引项在每个文档中出现的位置信息,你可以利用这些信息来参与对索引结果的排序。表 6 显示了这个文件的结构
表6:位置文件的结构
到目前为止我们介绍了 lucene 中的主要的索引文件结构,希望能对你理解 lucene 的物理的存储结构有所帮助。