深入lucene--文件格式(基本概念)

2011-12-26

索引过程:将倒排序的表写成文件格式的过程 

搜索过程:读出索引信息,然后计算每篇文章的搜索权重过程

Lucene的索引结构层次如下:

lucene索引文件

索引(index)

Lucene中一个索引是放在一个文件夹下的。

Lucene的文件夹下的所有文件构成一个索引。

段(segment)

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

在生成索引的过程中,相同的段有相同的前缀,例如 _0和_1就是两个不同的段。

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

文档(Document)

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

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

域(Field)

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

不同的域索引方式不一样,主要是针对不同数据类型的数据压缩算法不一样。

词(Term)

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

ps:Lucene索引既保存了正向信息,也保存了反向信息。

正向信息:索引(Index)->段(segement)->文档(Document)->域(Field)->词(Term)

  • 上图的文件segment_N保存了此索引包含多少个段,每个段包含多少篇文档。
  • 前缀.fnm保存了此段包含了多少个域,每个域的名称及索引方式。
  • 前缀.fdx,前缀.fdt保存了此段包含的所有文档,每篇文档包含了多少域,每个域保存了哪些信息。
  • 前缀.tvx,前缀.tvd,前缀.tvf保存了此段包含多少文档,每篇文档包含了多少个域,每个域包含了多少个词,每个词的字符串,位置等信息。

反向信息:保存了词典到倒排序表的映射:词(Term)->文档(Document)

包含反向信息的文件有:

  • 前缀.tis,前缀.tii保存了词典(Term Dictionary),也即此段包含的所有词按字典的顺序排序。
  • 前缀.frq保存了倒排表,也及包含每个词的文档ID列表。
  • 前缀.prx保存了倒排表中每个词在包含此词的文档中的位置。

pdf p28

作者:robotbird, 分类:关于代码 标签: lucene , 浏览(3364), 评论(1)
上一篇: 记住最重要的事情
下一篇: 罗马的故事-苏拉

相关文章

(1)条评论 订阅

  1. ${item.nickname} 币安链 说:

    Lucene的文件夹下的所有文件构成一个索引。

1

发表评论

电子邮件用于回复通知和avatar全球唯一头像 *

*