lucene 基本数据类型
Byte
最原生的类型8位一字节。文件都是以字节流读入的。所有的其它数据类型都会被定义为字节序列。
UInt32
32位无符号int,4字节,高位优先(就是最低的地址存放高位字节)。
UInt32 --> <Byte>4
Uint64
64位无符号Int,8字节,高位优先。
UInt64 --> <Byte>8
VInt
一种表示正数的可变长度的格式,每个字节的高位表示是否还有更多的字节表示。低七位表示数字的自然增长,所以数字从0到127可以存在一个字节里,128到16,383用两个字节存储,具体可见下表。
VInt Encoding Example
Value
First byte
Second byte
Third byte
0
00000000
1
00000001
2
00000010
...
127
01111111
128
10000000
00000001
129
10000001
00000001
130
10000010
00000001
...
16,383
11111111
01111111
16,384
10000000
10000000
00000001
16,385
10000001
10000000
00000001
...
这样的编码方式可以提供较高的解码效率也提供了一定的压缩。
Chars
Lucene用Java's "modified UTF-8 编码"来写入Char。
String
Lucene用上述的VInt来写长度,用Char来写具体的内容。
String --> VInt, Chars