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 


00000000 

 



00000001 

 



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