Lucene 卢森的葡萄酒是什么?

Lucene 卢森的葡萄酒是什么?,lucene,compression,Lucene,Compression,我想知道Lucene的葡萄酒是什么 我读了这篇文章,但我不明白它是什么,Lucene在哪里使用它? 为什么Lucene不使用简单整数或大整数 谢谢。VInt指的是Lucene的可变宽度整数编码方案。它在一个或多个字节中编码整数,只使用每个字节的低位七位。除最后一个字节外,所有字节的高位都设置为零,这是长度的编码方式。VInt非常节省空间。理论上,它可以节省多达75%的空间 在Lucene中,许多结构都是整数列表。例如,给定术语的文档列表、术语在文档中的位置(和偏移量)等。这些列表构成了lucen

我想知道Lucene的葡萄酒是什么

我读了这篇文章,但我不明白它是什么,Lucene在哪里使用它? 为什么Lucene不使用简单整数或大整数


谢谢。

VInt指的是Lucene的可变宽度整数编码方案。它在一个或多个字节中编码整数,只使用每个字节的低位七位。除最后一个字节外,所有字节的高位都设置为零,这是长度的编码方式。

VInt非常节省空间。理论上,它可以节省多达75%的空间

在Lucene中,许多结构都是整数列表。例如,给定术语的文档列表、术语在文档中的位置(和偏移量)等。这些列表构成了lucene数据的大部分

想想Lucene索引,它用于数百万个需要数十GB空间的文档。将空间缩减一半以上可减少磁盘空间需求。虽然节省磁盘空间可能不是一个大赢家,但考虑到磁盘空间便宜,真正的好处是减少了磁盘IO。读取VInt数据的磁盘IO低于读取整数,这会自动转换为更好的性能。

关于第一个问题: 定义了正整数的可变长度格式,其中每个字节的高阶位指示是否还有更多字节需要读取。低阶七位作为结果整数值中越来越高的有效位追加。因此,从0到127的值可以存储在一个字节中,从128到16383的值可以存储在两个字节中,依此类推

因此,要保存一个n个整数的列表,需要的内存量是[eg]4*n字节。但使用Vint,128以下的所有数字将仅使用1个字节(以此类推)进行存储,从而节省大量内存


Vint提供了整数的压缩表示,Shashikant的答案已经解释了Lucene中压缩的要求和好处

我知道,但我想知道lucene为什么这么做?为什么它不在4字节中使用简单整数(0-~4000000000)?