![]() |
1
4
VINT非常节省空间。理论上可以节省75%的空间。 在Lucene中,许多结构都是整数列表。例如,给定术语的文档列表、文档中术语的位置(和偏移)等。这些列表构成了大部分Lucene数据。 想想需要数千万GB空间的数百万文档的Lucene索引。将空间缩小一半以上可减少磁盘空间需求。虽然节省磁盘空间可能不是一个巨大的胜利,但考虑到磁盘空间很便宜,真正的好处是减少了磁盘IO。读取VINT数据的磁盘IO低于自动转换为更好性能的读取整数。 |
![]() |
2
1
VINT是指Lucene的可变宽度整数编码方案。它只使用每个字节的低7位,将整数编码为一个或多个字节。除最后一个字节外,所有字节的高位都设置为零,这就是长度的编码方式。 |
![]() |
3
1
第一个问题: 定义正整数的可变长度格式,其中每个字节的高位表示是否还有更多字节需要读取。低阶7位作为结果整数值中越来越重要的位进行追加。因此,从零到127的值可以存储在单个字节中,从128到16383的值可以存储在两个字节中,依此类推。 https://lucene.apache.org/core/3_0_3/fileformats.html . 因此,要保存一个n个整数的列表,您需要的内存量是[eg]4*n字节。但是使用VINT,128以下的所有数字将只使用1字节(等等)存储,从而节省大量内存。 VINT提供整数的压缩表示,Shashikant的答案已经解释了Lucene中压缩的要求和好处。 |
![]() |
Adam Fraser · 以字符串形式高效地读取java中的任何文件 6 年前 |
![]() |
MathBunny · 适用于小字符串列表的良好字符串压缩算法/方法? 7 年前 |
![]() |
Barny · 特定长阵列的压缩可能性 7 年前 |
![]() |
aja · 验证是否使用lzo1z压缩对数据进行压缩 7 年前 |
![]() |
Philippe Ear · 哈夫曼压缩[关闭] 7 年前 |