lucene索引文件格式-Field文件

Lucene40FieldInfosFormat

字段名存储在字段信息文件中,后缀为.fnm。

文件

FieldInfos (.fnm) --> Header,FieldsCount, FieldsCount

数据类型:
  • Header --> CodecHeader
  • FieldsCount --> VInt
  • FieldName --> String
  • FieldBits, DocValuesBits --> Byte
  • FieldNumber --> VInt
  • Attributes --> Map
文件描述:
  • FieldsCount: 此文件中的字段数.
  • FieldName: 作为UTF-8字符串的字段名称.
  • FieldNumber: 字段的编号。请注意,与先前版本的Lucene不同,字段不是由文件中的顺序隐式编号,而是显式编号
  • FieldBits: 包含字段选项的字节.
    • 低位是针对索引字段的位,对于非索引字段是零
    • 对于存储有term向量的字段,第二个最低位是1,对于没有term向量的字段,第二个最低位是0
    • 如果设置了第三个最低位(0x4),则除了位置之外,还会将偏移存储到posting列表中。
    • 第四位没有被使用
    • 如果设置了第五个最低位(0x10),则索引字段将省略norms
    • 如果设置了第六个最低位(0x20),则为索引字段存储payload
    • 如果设置了第七个最低位(0x40),则索引字段省略了term频率和位置
    • 如果设置了第八个最低位(0x80),则索引字段的位置被省略
  • DocValuesBits: 包含每个文档值类型的字节,记录为两个四位整数的类型,高位表示 norms选项,低位表示 DocValues选项,每个四位整数可以这样解码:
    • 0: 此字段没有DocValues
    • 1: 可变宽度有符号整数(Type#VAR_INTS VAR_INTS)
    • 2: 32位浮点值(Type#FLOAT_32 FLOAT_32)
    • 3: 64位浮点值(Type#FLOAT_64 FLOAT_64)
    • 4: 固定长度的字节数组值(Type#BYTES_FIXED_STRAIGHT BYTES_FIXED_STRAIGHT)
    • 5: 固定长度取消引用的字节数组值(Type#BYTES_FIXED_DEREF BYTES_FIXED_DEREF)
    • 6: 可变长度字节数组值(Type#BYTES_VAR_STRAIGHT BYTES_VAR_STRAIGHT)
    • 7: 可变长度的取消引用字节数组值。(Type#BYTES_VAR_DEREF BYTES_VAR_DEREF)
    • 8: 16位有符号整数(Type#FIXED_INTS_16 FIXED_INTS_16)
    • 9: 32位有符号整数(Type#FIXED_INTS_32 FIXED_INTS_32)
    • 10: 64位有符号整数(Type#FIXED_INTS_64 FIXED_INTS_64)
    • 11: 8位有符号整数(Type#FIXED_INTS_8 FIXED_INTS_8)
    • 12: 固定长度排序的字节数组值(Type#BYTES_FIXED_SORTED BYTES_FIXED_SORTED)
    • 13: 可变长度排序的字节数组值(Type#BYTES_VAR_SORTED BYTES_VAR_SORTED)
  • Attributes: 编解码器 - 私有属性的键值映射

Lucene40StoredFieldsFormat

存储的字段由两个文件表示:

1.字段索引或者 .fdx 文件.

这用于查找特定文档字段的字段数据文件中的位置,因为它包含固定长度的数据,所以很容易地随机访问该文件。文档n的字段数据的位置在此文件中Uint64值为 n * 8。

对于每个文档,它包含指向其字段数据的指针,如下所示:

  • FieldIndex (.fdx) -->
    , SegSize
  • Header --> CodecHeader
  • FieldValuesPosition --> Uint64

2.字段数据或者 .fdt 文件.

它包含每个文档的存储字段,如下所示:

  • FieldData (.fdt) -->
    , SegSize
  • Header --> CodecHeader
  • DocFieldData --> FieldCount, FieldCount
  • FieldCount --> VInt
  • FieldNum --> VInt
  • Bits --> Byte
    • 低位保留.
    • 第二位是包含二进制数据的字段的第二位
    • 第三位保留.
    • 第4到第6位(掩码:0x7 << 3)定义数字字段的类型:
      • 如果没有numeric 字段,则清除掩码中的所有位
      • 1<<3: Value是Int
      • 2<<3: Value是Long
      • 3<<3: Value是Float转换的Int (例如 Float.intBitsToFloat(int)
      • 4<<3: Value是Double转换的Long (例如 Double.longBitsToDouble(long)
  • Value --> String | BinaryValue | Int | Long (depending on Bits)
  • BinaryValue --> ValueSize, ^ValueSize
  • ValueSize --> VInt

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