提示:
信息检索:索引压缩-倒排表压缩
字节 (Byte)是计量单位,表示数据量多少,是计算机信息技术用于计量存储容量的一种计量单位,通常情况下一字节等于八位。. 字符 (Character)计算机中使用的字母、数字、字和符号,比如’A’、‘B’、’$’、’&'等。. 一般在英文状态下一个字母或字符占用一个字节,一个汉字用两个字节表示。
倒排记录表的压缩
压缩的必要性:
倒排记录表远大于词典,至少为10倍。
每个倒排表都用文档ID来表示:对上述文档N=800000,使用4字节整数表示,每个文档id要用32bit.
或者log2800000=20bit
目标:用远小于20bit来保存每个文档ID。
压缩分析
文档ID间距:文档递增顺序存储间隔
倒排表中一些很少使用很长的词项可能在一百万个文档中才会出现一次,用20比特存储就比较合适;而对于像the这样的词项,每个文档都会出现,用20比特就过于浪费。
可变长度编码
对于不同词项,每个间距项使用不同的bit数。
整数个字节对每个间距编码:
>>VB代码实现<<
字节的后7 位是间距的有效编码区,而第1 位是延续位(continuation bit)。如果该位为1,则表明本字节是某个间距编码的最后一个字节,否则不是。
延续位代表延续位所在字节为当前间距编码的最后一个字节。
间距很小的情况下浪费空间
其它可变单位编码
一元编码
对于整数N,就是N个1后面加个0
3的一元编码:1110
4的一元编码:11110
※γ编码
偏移长度的一元编码+二进制位去首部(偏移)
举例:
※γ解码
5总结
对于RCV1: