lucene索引文件格式-segment文件

SegmentInfos

segmentInfo对象的集合,其中包含用于与文件系统相关的段进行操作的方法。

索引中的活动段存储在段信息文件 segments_N中,索引中可能有一个或多个segments_N文件,但是具有最大值的那个是有效的段信息文件(当存在较旧的segments_N文件时,因为它们暂时无法删除,或者,writer正在提交,或者正在使用自定义 IndexDeletionPolicy)。此文件按名称列出每个段,并包含有关编解码器和删除的generation的详细信息。

还有一个segments.gen文件,该文件包含当前索引的generation(segments_N中的N)。这仅用作备用,以防单独的目录列表无法准确确定当前的generation(对于某些具有基于时间的目录缓存到期的NFS客户端的情况)。此文件简单地包含一个 Int32版本Header( FORMAT_SEGMENTS_GEN_CURRENT),接着的是以Int64格式写入两次的generation

文件:
  • segments.gen: GenHeader, Generation, Generation, Footer
  • segments_N: Header, Version, NameCounter, SegCount, SegCount, CommitUserData, Footer
数据类型:
  • Header --> CodecHeader
  • GenHeader, NameCounter, SegCount, DeletionCount --> Int32
  • Generation, Version, DelGen, Checksum, FieldInfosGen, DocValuesGen --> Int64
  • SegName, SegCodec --> String
  • CommitUserData --> Map
  • UpdatesFiles --> Map>
  • Footer --> CodecFooter
字段描述:
  • Version计数通过添加或删除文档来更改索引的频率.
  • NameCounter用于为新段文件生成名称
  • SegName是段的名称,并用作组成段索引的所有文件的文件名前缀。
  • DelGen是删除文件的generation计数。如果这是-1,则没有删除。大于零的任何值意味着存储了删除的LiveDocsFormat
  • DeletionCount记录此段中已删除文档的数量
  • SegCodec是编码此段的解码器的名称
  • CommitUserData存储用户提供的可选的不透明Map 传递给IndexWriter.setCommitData(java.util.Map).
  • FieldInfosGen是fieldInfos文件的generation计数。如果为-1,则该段中的fieldInfos没有更新,大于零的任何值意味着存储的fieldInfos都有更新
  • DocValuesGen是可更新DocValues的生成计数。如果为-1,则该段中的DocValues没有更新。大于零的任何意味着存储的DocValues都有更新
  • DocValuesGen是可更新DocValues的generation计数。如果为-1,则该段中的DocValues没有更新。大于零的任何意味着存储的DocValues都有更新
  • UpdatesFiles存储每个字段在该段中更新的文件集

Lucene40SegmentInfoFormat

文件:
  • .si: Header, SegVersion, SegSize, IsCompoundFile, Diagnostics, Attributes, Files
数据类型:
  • Header --> CodecHeader
  • SegSize --> Int32
  • SegVersion --> String
  • Files --> Set
  • Diagnostics, Attributes --> Map
  • IsCompoundFile --> Int8
字段描述:
  • SegVersion是创建的段的代码版本。
  • SegSize是段索引中包含的文档数
  • IsCompoundFile记录段是否写为复合文件。如果为-1,则该段不是复合文件。如果为1,则段是复合文件。
  • Checksum 包含segments_N文件中所有字节的CRC32校验和,这用于在打开索引时验证文件的完整性
  • Diagnostics Map由其IndexWriter创建的每个段作为调试辅助工具私密编写。它包括元数据,如当前的Lucene版本,操作系统,Java版本,创建段的原因(merge,flush,addIndexes)等。
  • Attributes:编解码器 - 私有属性的键值映射
  • Files 是此段引用的文件列表

你可能感兴趣的:(lucene索引文件格式-segment文件)