代码之家  ›  专栏  ›  技术社区  ›  Mahdi Amrollahi

露西亚的葡萄酒是什么?

  •  2
  • Mahdi Amrollahi  · 技术社区  · 14 年前

    我想知道露西的酒是什么?

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

    谢谢。

    3 回复  |  直到 9 年前
        1
  •  4
  •   Shashikant Kore    14 年前

    VINT非常节省空间。理论上可以节省75%的空间。

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

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

        2
  •  1
  •   Marcelo Cantos    14 年前

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

        3
  •  1
  •   D W    9 年前

    第一个问题: 定义正整数的可变长度格式,其中每个字节的高位表示是否还有更多字节需要读取。低阶7位作为结果整数值中越来越重要的位进行追加。因此,从零到127的值可以存储在单个字节中,从128到16383的值可以存储在两个字节中,依此类推。 https://lucene.apache.org/core/3_0_3/fileformats.html .

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

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