lucene索引结构.ppt
文本预览下载声明
Lucene索引结构 任化伟 概要 基础数据类型 逻辑结构 物理结构 数据流图 注意事项 基础数据类型 以上的数据类型就是Lucene索引文件格式中用到的全部数据类型,由于它们都以字节为基础定义而来,因此保证了是平台无关。 概要 基础数据类型 逻辑结构 物理结构 数据流图 注意事项 逻辑结构 Lucene索引index由若干段(segment)组成,每一段由若干的文档(document)组 成,每一个文档由若干的域(field)组成,每一个域由若干的项(term)组成。 项是最小的索引概念单位,它直接代表了一个字符串以及其在文件中的位置、 出现次数等信息。 概要 基础数据类型 逻辑结构 物理结构 数据流图 注意事项 物理结构 Lucene索引文件结构组成 Segments文件(一) 2.1版前: Segments -- Format, Version, NameCounter, SegCount, SegName, SegSize SegCount 2.1及以上版本: Segments -- Format, Version, NameCounter, SegCount, SegName, SegSize, DelGen, HasSingleNormFile, NumField, NormGenNumField, IsCompoundFile SegCount 2.3及以上版本:Segments -- Format, Version, NameCounter, SegCount, SegName, SegSize, DelGen, DocStoreOffset, [DocStoreSegment, DocStoreIsCompoundFile], HasSingleNormFile, NumField, NormGenNumField, IsCompoundFileSegCount Format, NameCounter, SegCount, SegSize, NumField, DocStoreOffset --U Int32 Version, DelGen, NormGen -- UInt64 SegName, DocStoreSegment -- String IsCompoundFile, HasSingleNormFile, DocStoreIsCompoundFile -- Byte Segments文件(二) 在1.4版前Format 为-1,1.4-2.0版为-2,2.1、2.2版为-3,2.3及以上版本为-4。 Format为索引版本变更的标志,在1.4版引入了复合索引( .cfs ),在2.1版去除了commit.lock,在2.3版加入了共享存储,所以进行了版本升级。 Version:存储的最后一次修改索引的时间 NameCounter:用来生成新的segment名称的 SegName:在符合索引中的segment的扩展名 SegSize:索引中的document的总数量 DelGen:标记那些文档被删除了 NumField:记录了被删除文档的个数 IsCompoundFile:文档是否压缩存储的标志 DocStoreOffset, DocStoreSegment, DocStoreIsCompoundFile: 如果DocStoreOffset为-1,则segment自己存储文档信息,不在存储DocStoreSegment, DocStoreIsCompoundFile信息;否则 DocStoreSegment是共享存储文件的名称,DocStoreIsCompoundFile标志了共享文件是否为复合索引文件,DocStoreOffset是文档在共享索引文件中的偏移量。 segments.gen文件 从2.1版开始存储segments.gen文件 segments.gen-- Format, GenerationTwice Format--UInt32 Generation-- UInt64 segments.gen保存了当前段号,可以在最后一个段处理失效时进行回退处理。在分布式环境下由客服端cache失效导致的异常可以有该机制处理。 锁文件(.lock文件) 锁文件:用来表示另一个进程在使用索引的文件。 1、如果存在“commit.lock”文件,表示有进程在写“segments”文件和删除无用的段索引文件,或者表示有进程在读“segments”文件和打开某些段的文件。在一个进程在读取“segments”文件段信息后,还没来得及打开所有该段的文件前,这个Lock文件可以防止另一个进程删除这些文件。从2.1版本去除了该锁文件。 2、如果存在index.lock文
显示全部