2021SC@SDUSC
lucene索引结构
搜索的基础是索引文件,因此索引结构对于我的研究工作很有帮助。
基本概念:
索引
Lucene的索引由许多个文件组成,这些文件放在同一个目录下
段
一个Lucene的索引由多个段组成,段与段之间是独立的。添加新的文档时可以生成新的段,达到阈值(段的个数,段中包含的文件数等)时,不同的段可以合并。
在文件夹下,具有相同前缀的文件属于同一个段
segments.gen 和 segments_N(N表示一个具体数字,eg:segments_5)是段的元数据文件,他们保存了段的属性信息。
文档
文档时建索引的基本单位,一个段中可以包含多篇文档
新添加的文档时单独保存在一个新生成的段中,随着段的合并,不同的文档会合并到至相同的段中。
域
一个文档有可由多个域(Field)组成,比如一篇新闻,有 标题,作者,正文等多个属性,这些属性可以看作是文档的域。
不同的域可以指定不同的索引方式,比如指定不同的分词方式,是否构建索引,是否存储等
词
词是索引的最小单位,是经过词法分词和语言处理后的字符串。同一个bytes序列,在不同的field中被认为是不同的term;因此term由一对值组成:field name(string)和field value(bytes)
lucene的一个index文件存放在同一个文件夹下,由多个文件组成。
lucene通过一个整型的文档编码来关联文档(document),第一个文档的编码为0,其他文档的编码依次递增。文档的编码可能会变更因此在lucene之外存储这些编码的时候要格外小心。