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

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

  1. 这就是搜索引擎核心技术详解@学习笔记

    对应文章的下载地址: http://download.csdn.net/detail/yijiyong100/6356227 背  景 关于本篇学习笔记,只是把书中的一些概念进行了归纳,同时把个人的一 ...

  2. 《这就是搜索引擎:核心技术详解》---读后感

    搜索引擎作为互联网发展中至关重要的一种应用,已经成为互联网各个领域的制高点,其重要性不言而喻.搜索引擎领域也是互联网应用中不多见的以核心技术作为其命脉的领域,搜索引擎各个子系统是如何设计的?这成为广大 ...

  3. 1.这就是搜索引擎:核心技术详解 --- 搜索引擎及其技术架构

    1.搜索引擎及其技术架构1.2 搜索引擎技术发展史 1.2.1 史前时代:分类目录的一代 1.2.2 第一代:文本检索的一代 1.2.3 第二代:链接分析的一代 这一代的搜索引擎充分利用了网页之间的链 ...

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

    这就是搜索引擎:核心技术详解 张俊林 著 ISBN 978-7-121-14865-1 2012年1月出版 定价:45.00 元 16开 320页 宣传语:改变全世界人们生活方式的"信息之门 ...

  5. php操作ElasticSearch搜索引擎流程详解

    更多python.php教程请到友情连接: 菜鸟教程https://www.piaodoo.com 茂名一技http://www.enechn.com ppt制作教程步骤 http://www.tpy ...

  6. Mysql详解——索引优化

    本篇文章是对Mysql索引的创建以及优化进行一个介绍,关于索引的底层原理可以看我另一篇文章:Mysql详解--索引详解 文章目录 一.索引的创建和设计原则 1. 索引的声明和使用 1.1 索引的分类: ...

  7. 全文搜索引擎 Elasticsearch详解

    文章目录 什么是ElasticSearch Elasticsearch 的用途是什么? ElasticSearch基本概念 类型 文档 字段 Node节点 shard:分片 replica:副本 倒排 ...

  8. spring aop实例讲解_Spring核心技术详解(一)

    一.Sring简介 Spring是一个分层的Java SE/EE应用一站式的轻量级开源框架.Spring核心是IOC和AOP. Spring主要优点包括: 方便解耦,简化开发,通过Spring提供的I ...

  9. Spring核心技术详解

    一.Sring简介 Spring是一个分层的Java SE/EE应用一站式的轻量级开源框架.Spring核心是IOC和AOP.  Spring主要优点包括: 方便解耦,简化开发,通过Spring提供的 ...

  10. Oracle 索引 详解 - 索引分类

    二. 索引分类 Oracle提供了大量索引选项.知道在给定条件下使用哪个选项对于一个应用程序的性能来说非常重要.一个错误的选择可能会引发死锁,并导致数据库性能急剧下降或进程终止.而如果做出正确的选择, ...

最新文章

  1. 程序员如何优雅地使用 Mac? - OS X - 知乎
  2. 无比震荡 Fedora Linux把密码输出都落实起来
  3. 服务器每秒钟执行命令数量是什么_全国自考互联网及其应用模拟试卷(一)及答案.doc...
  4. 发现一个小坑的地方,unity的协程,想要停止,必须以字符串启动
  5. python mpi开销_GitHub - hustpython/MPIK-Means
  6. python上网行为分析_python实战练手项目---获取谷歌浏览器的历史记录,分析一个人的上网行为...
  7. 解决android帮助文档打开慢
  8. 【Python自动化运维之路Day6】
  9. layui怎样将响应数据展示在页面_layui-table对返回的数据进行转变显示的实例
  10. Speedoffice(ppt)中如何插入表格
  11. 计算机显卡风扇有异响,电脑运行中有异响,拍一拍就好了,原来好多人还不知道问题在哪!...
  12. 沙加在沙罗双树下临死前的一段对白
  13. ue4加载本地图片_UE4 读取本地图片
  14. 树莓派是网盘?nextcloud在树莓派上的应用
  15. Linux 服务器用上 SS Client
  16. loam源码解析5 : laserOdometry(三)
  17. python中cd是什么意思_改变当前路径 (cd)
  18. 解决Vue路由重复跳转报错
  19. PinyinMatch实现拼音匹配,分词、缩写、多音字匹配能力
  20. 雅可比(Jacobi)方法

热门文章

  1. ethtool查看网卡以及修改网卡配置
  2. 向架构师进军---系统架构设计基础知识
  3. 最土团购程序一些常见的数据库操作
  4. MSsql差异备份总结
  5. [SCM]源码管理 - perforce的trigger和daemon
  6. mailR:利用R语言发邮件
  7. 当文科生遇见R语言,照样玩得转
  8. css matrix矩阵,矩阵 | matrix() (Transforms) - CSS 中文开发手册 - Break易站
  9. html没有prefix属性,HTML前缀属性(Open Graph Protocol)的含义?
  10. 【Windows C++笔记】winbase.h