FOR压缩算法

一、倒排索引的数据结构

 倒排表的压缩算法:FOR、RBM

词项索引的检索原理:FST

二、FOR压缩算法

如上图,假设倒排表中最理想的一行id为1,2,3......100 W个连续数字

 图Ⅰ:若没有使用FOR压缩算法,则有100W个int类型的数字,1数字=4字节,则有400W字节,约占4M存储空间。1字节=8bit,则1int需要32bit,即3200Wbit

   若使用了FOR压缩算法,1-100W个连续数字,前后两个数字取差值,得到最终结果1,1,1.....1。100W个1,每个1需要2的0次方=1bit存储即可。最终结果为100Wbit,空间节省32倍

图Ⅱ:倒排表中id几乎不可能为连续数字,以73,300,302,332,343,372为例。6个int类型数字,不使用FOR压缩算法需要24byte

   若使用FOR压缩算法,先取差值得到73,227,2,30,11,29。这时得出最大差值为227,227在2的8次方范围内,这样就只需要每个分配2的8次方的空间

   在上面的基础上,我们发现有一个差值是2,这时FOR算法会根据一定原则自动分组,从而再次降低需要分配的存储空间

 

posted @ 2022-02-08 16:27  showMeTheCodes  阅读(417)  评论(0编辑  收藏  举报