4.这就是搜索引擎:核心技术详解 --- 索引压缩 

	对于海量的网页数据,为其建立倒排索引往往需要耗费较大的磁盘空间,尤其是一些比较常见的单词,其对应的倒排列表可能大小就几百兆。由于磁盘读写往往是个瓶颈,
所以包含常用词的用户查询,其响应速度会受到严重影响。压缩索引则可以利用数据压缩算法,有效的将数据减少,这样一方面可以减少索引占用的磁盘资源,另一方面可以减少
磁盘读写数据量,加快用户查询的响应速度。
	倒排索引主要包含两个部分组成:单词词典和单词对应的倒排列表。所以针对索引的压缩算法,也分为针对词典的压缩算法和针对倒排列表的压缩。而对倒排列表的压缩又
可以细分为无损压缩和有损压缩。

 4.1 词典压缩 
	词典一般存储:单词本身内容,文档词频信息(DF),指向倒排列表的指针信息。
	为了快速响应用户查询,词典数据往往会全部加载到内存中,以加快查找速度。

 4.2 倒排列表压缩算法 
	倒排列表一般存储:文档编号,词频信息,以及单词位置序列信息。

  4.2.1 评价索引压缩算法的指标 
		评价倒排列表压缩算法会考虑3个方面的指标:压缩率,压缩速度和解压速度。
		压缩率:数据压缩前的大小和压缩后的大小的比例关系。
		压缩速度:指压缩一定量的数据所花费的时间。
		解压速度:是最重要的,其含义是将压缩数据再次恢复为原始数据所花费的时间。

  4.2.2 一元编码与二进制编码 
		一元编码和二进制编码是所有倒排列表压缩算法的基本构成元素,不论压缩算法内部逻辑思路是怎样的,最终都要以这两种形式来对数据进行表示。要么是以一元编码
	  和二进制编码混合的方式,要么是单独二进制编码的方式。可以认为这两种编码格式是压缩算法的基础构件。
	  	一元编码是非常简单的数据表示方式,对于整数X来说,使用X-1个二进制数字1和末尾一个数字0来表示这个整数。一元编码仅适合表示非常小的整数。
	  	二进制表示方式是计算机内部的标准数据存储方式,即由二进制数字0和1进行组合来表示实际的数据。

  4.2.3 Elias Gamma算法与Elias Delta算法 
  4.2.4 Golomb算法与Rice算法 
  4.2.5 变长字节算法(Variable Byte) 
		变长字节算法以字节(即比特宽度为8)为一个基本存储单位,而之前介绍的压缩算法都是变长比特算法,即以比特位(Bit)作为基本存储单位。在压缩编码后占用的字节数目
	  不一定相同,可长可短。

  4.2.6 SimpleX 系列算法 
  4.2.7 PForDelta算法 

 4.3 文档编号重排序(DocID Reordering)
		对于搜索引擎来说,在建立索引的过程中,要对每个网页赋予唯一的文档编号(文档ID),在搜索引擎内部,都以文档ID来标记某个网页。
		文档编号重排序技术考虑是在文档编号上做文章,不是随机赋予网页一个文档id,而是通过对文档id进行更加合理的编号,使得在倒排列表中相邻的两个文档其编号也尽可能相邻,
	  这样可以使相邻文档的D-Gap值尽可能小,而对小数值采用压缩算法效率会更高。
		 
 4.4 静态索引裁剪(Static Index Pruning) 
	有损压缩,通过主动抛弃一部分不重要的信息来达到更好的数据压缩效果。

  4.4.1 以单词为中心的索引裁剪 
  4.4.2 以文档为中心的索引裁剪

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值