索引压缩学习总结

本文主要探讨了搜索引擎索引压缩的方法,包括词典压缩、倒排列表压缩算法。介绍了词典中原词的压缩策略,如存储区分离和指针优化,以及一元编码、二进制编码、Elias Gamma和Elias Delta等压缩算法。还提到了Golomb和Rice算法,以及变长字节、simpleX系列和PForDelta等高效压缩技术。文档编号重排序也被提出,通过文档聚类降低差值,提高压缩率。
摘要由CSDN通过智能技术生成
词典压缩

词典中一般包含三部分信息,原词,df,及倒排索引指针.其中要压缩的是原词,存在不规则性
如果都去开辟最大那个原词的字节空间,那么整个字典树将有非常大的空间浪费.

将单词单独抽取出来放在一个单独的存储区内,原词的位置存放指向该词语的指针.

再次优化可以将指针在某个范围内仅仅保存一个指针,在单词存储区保存原词及词长.

倒排列表压缩算法

评价索引压缩算法的指标:压缩率,压缩速度,解压速度,先对搜索引擎而言解压速度更加重要(响应查询)

一元编码:对于整数X,使用X-1个二进制数字1和末尾0来表示.如 4 表示为 1110
二进制编码:根据不同数字采用不同比特宽度来编码 如 1 <1>  3<11> 9 <1001>

Elias Gamma 和 Elias Delta 算法

Elias Gamma将数字按照如下函数拆解: x =2 ⁿ +d 
对n+1采用一元编码,d采用二进制编码bit的宽度为n
12 ---> 1110:100
Elias Delta 相当于两次Elias Gamma算法,第二次对 n +1 再次进行一次 Elias Gamma
12 ---> 110:00:100

Golomb 算法 与 Rice 算法

这两个算法采用的因子解析式相同,如下:

因子1 = (X-1)/b
因子2 = (X-1)mod b

不同在于对b的选取上:
Golomb 算法 : b = 0.69 * avg 
Rice 算法: b 为小于avg的最大2的次幂
因子1采用 一元编码 因子2 采用 二进制编码 bit宽度为 log2(b) 


变长字节算法:
一个字节为8bit 最大只能存储的数为 256,如果再大的话,需要增长字节.

再字节的首位存一个标识符,标识出,是否为该数字表示的最后一个字节,来完成多个字节的组合表示数字(一个字节有效bit为7位)

simpleX系列算法:

将四个个字节划分为两个区域,一个为类型指示(4bit),一个为数据存储,不断的循环查询一个数据储存列表,直到满足指定的储存类型,将数据存入,

PForDelta算法

解压最快的

一次性读取K个数值,取出其中一定比例的最大数,当做异常数据倒序存在数据存储区尾端,将其余的数据统计得出需要采用多少个bit来压缩存储.在原来的异常数据位置存上指针.指向下一个异常数据.



文档编号重排序


倒排列表中存储的文档id是计算差值后的存储,如果能将文档相似度高的文档分在一个分类中,再赋予文档id,那么该文档中term后跟的文档id的差值将会大大降低.从而提高压缩率
其中需要对文档进行聚类.来进行类别的划分

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值