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