深入研究PackedInts、VInt、FixedBitSet和RoaringDocIdSet(Roaring位图)

之前我们学习了使用产品量化进行相似性搜索的向量压缩。
产品量化用于相似性搜索
如何在内存中压缩和适应庞大的向量集,以进行具有非对称距离计算的相似性搜索…
towardsdatascience.com
在本文中,我们将探索和深入了解整数在Lucene中是如何编码和压缩的,Lucene是倒排索引占据主导地位的世界。
Lucene简介
Lucene是一个用Java编写的开源搜索引擎库。由Doug Cutting于1999年创建,它以全文搜索和索引而闻名。
这个基于Apache软件基金会的开源软件项目在两十多年后仍在积极开发中。多年来,它已经发展壮大,成为一个功能齐全、高性能的强大搜索引擎库。
毫无疑问,Lucene的成功主要归功于其强大的社区和贡献者所做出的不可思议的工作。他们的参与和合作将Lucene带到了今天的地位。许多流行的企业搜索平台和解决方案,如Solr和Elasticsearch,都是在Lucene之上构建的。
“对于一个开源项目来说,20年是很长的时间。毫无疑问,Lucene的长寿是其社区的强大和多样化的证明” — 庆祝Apache Lucene 20周年
倒排索引
倒排索引是Lucene的核心。倒排索引包括两个部分——左边是词典,右边是每个词的倒排列表。

倒排列表包含一个词在文档中出现的信息。倒排列表中包含文档的Doc ID…