/*版权声明:可以任意转载,转载时请务必标明文章原始出处和作者信息 .*/
搜索引擎索引压缩技术
张俊林
timestamp:2006-12-15
建立索引是搜索引擎核心技术之一,建立索引的目的是能够快速的响应用户的查询。搜索引擎最常用的索引数据结构是倒排文档,倒排文档的原理其实相当简单。
我们拿以下三篇文章作为代表来说明倒排文档,文章内容为:
D1:“张钰小姐代表了中国广大淫民的根本利益”
D2:”宋祖德先生代表了中国八卦文化的前进方向“
D3:“郭敬明代表了中国作家抄袭先进生产力的发展要求”
经过分词,过滤高频词后可以构建如下的倒排文档:
张钰 ->D1,1;
代表->D1,1;D2,1;D3,1;
宋祖德->D2,1;
.....
其中,“张钰”代表一个单词,《D1,1》代表了这个单词在D1文档中出现过1次(TF);为了方便处理,往往会 把单词和文档编号转换为数字形式。
说到倒排文档压缩,首先要问一个问题:为什么要进行索引压缩?
对索引进行压缩有很多好处:比如可以 减少索引占用的磁盘空间和内存;比如可以减少I/O读写量; 比如可以查询响应速度加快;
为了能够增加压缩效果,一般在进行压缩前先改写索引内容,首先把倒排索引的数值按照大小排序,然后用差值而非实际值表示(d-gap);这个是每个压缩算法开展前要做的工作;
目前的压缩方法可以分为固定长度的和变长压缩。
1.固定长度的压缩方法
一个典型的方法是比特对齐压缩,这个方法以Byte为编码单元,不像变长压缩编码一般都以bit为编码单元;
对于要压缩的数字,一般用头两个bits代表长度,其它bit用二进制编码代表数值本身;
数值范围 头两个bit 压缩大小
0-63 00 1byte
64-16k 01 2byte
16k-4M 10 3byte
4M-1G 11 4byte
包括定长的和变长的索引压缩都有一个基本假设,就是:要压缩的大多数数值都比较小,所以压缩后占用空间不会多;
压缩率:10-20% of 原始未压缩索引;
2.变长的压缩方法
a.unary
对于要压缩的数值N来说,用N+1 个bits来表示,其中前N位是1,最后一位是0作为结束标记。
比如:
5:111110
10:11111111110
b.Elias压缩方法(gamma & delta)
对于一个要压缩的数值X,用log2(x)分解为两个数值,一个是N=log2(X),用N个1表示这个部分,另外一个是
剩余部分k=X-2powor((log2(X))),这部分数值k用二进制编码表示(长度等于N),中间用0隔开;
比如对于数值2,其压缩编码为1 0 0,因为log2(2)=1, 剩余为0;中间插入一个分割0;
比如对于数值10
N=log2(10)=3 所以第一个部分是:111
10-2(3)=2 所以第二个部分是:010
中间用0分割,所以是:111 0 010
c.Golomb压缩方法
对于一个要压缩的数值X,用公式分解:X=q*b+r+1; (0=<r<b)
其中,b叫做bucket size,可以根据情况来具体设置。我们假设b=3;
那么对于要压缩的数值10来说:
10=3*3+0+1;(q=3,b=3,r=0);
第一部分是对分解因子q进行编码,其编码方法类似于unary编码;比如对于10=3*3+0+1中,
q=1110;
第二部分是对于剩余因子r进行编码;仍然采用二进制编码,编码长度为log2(b)取上整数或者log2(b)上整数-1;
对于上面r=0; 其编码为0;
Golomb相对于Elias方法的好处就在于那个bucket size,这个值是可以设定的,可以根据索引里面
要压缩的数值的分布来调整bucket size来获得更好的压缩效果;
d.混合使用
一般对于不同的索引域,其数值的分布是不同的,各有其特点,经过分析数值分布属性,可以采取混合压缩策略。比如D-gap使用Golomb压缩,tf使用Gamma压缩。
采用索引压缩能够带来很多好处,所以实用的搜索引擎都会采用索引压缩技术,但是对索引进行压缩也会带来问题,
那就是比不压缩需要更多的计算量。
分享到:
相关推荐
深入搜索引擎--海量信息的压缩、索引和查询
标题中的“电信设备-一种搜索引擎索引的加密压缩方法及信息检索方法”表明了这个压缩包文件的内容聚焦在电信设备领域,特别是关于搜索引擎索引、数据加密和信息检索技术的应用。这种技术通常涉及到网络通信安全、...
总共有3个文件包。请大家找我名字获得。 三个文件包下载完后即可解压了。 深入搜索引擎:海量信息的压缩、索引和查询 高清PDF完整版 适合搜索引擎SEO人员的阅读提高
《深入搜索引擎:海量信息的压缩、索引和查询》作为斯坦福大学信息检索课程的教材之一,具有一定的阅读难度,主要面向信息检索专业高年级本科生和研究生、搜索引擎业界的专业技术人员和从事海量数据处理相关专业的...
标题中的“uuid全文索引千度搜索引擎”是一个项目或软件的名称,暗示了这是一个与搜索引擎相关的技术实现,可能用于在大量数据中快速查找特定信息。它特别提到了“uuid”,这是Universally Unique Identifier的缩写...
《搜索引擎--原理、技术与系统》是一份深入探讨搜索引擎核心概念、技术和系统的资源。这份50.5MB的压缩包包含了一份PDF文档,为读者揭示了互联网信息检索的关键环节。 搜索引擎是互联网上不可或缺的信息获取工具,...
深入搜索引擎—海量信息的压缩、索引和查询 高清pdf 中文 共有4部分 总共有74M 搜索引擎技术入门和提高的经典书籍 欢迎下载!
最后,倒排索引和索引压缩技术的选择要结合搜索引擎的具体应用场景。例如,桌面搜索系统可能更注重快速响应,而Web搜索引擎可能更关心索引的规模和扩展性。因此,在构建倒排索引时,需要在速度、空间和可维护性之间...
《深入搜索引擎:海量信息的压缩、索引和查询》作为斯坦福大学信息检索课程的教材之一,具有一定的阅读难度,主要面向信息检索专业高年级本科生和研究生、搜索引擎业界的专业技术人员和从事海量数据处理相关专业的...
众所周知,海量数据处理是搜索引擎最耀眼的核心技术之一,本书准确和系统地阐明了海量数据处理中压缩、索引和查询的理论、技术和实现,由此奠定了其搜索引擎圣经的美名,至今对学术界和行业界都产生着巨大的影响。...
在压缩包子文件的文件名称“用C语言写的C搜索引擎含多种建立索引的方式swish-e files.1.3.2”中,"swish-e"可能是一个具体的搜索引擎软件项目,版本号为1.3.2。Swish-e是一个开源的全文搜索引擎,它支持多种文件格式...
深入搜索引擎--海量信息的压缩、索引和查询 著名教材 共4部分,全部下载后解压part1即可。绝对没有错误! 第一部分:深入搜索引擎--海量信息的压缩、索引和查询part1 第二部分:深入搜索引擎--海量信息的压缩、索引和...
《深入搜索引擎:海量信息的压缩、索引和查询》是斯坦福大学信息检索和挖掘课程的首选教材之一,并已成为全球主要大学信息检索的主要教材。《深入搜索引擎:海量信息的压缩、索引和查询》理论和实践并重,深入浅出地给...
深入搜索引擎--海量信息的压缩、索引和查询中文版(5/6).zip.005深入搜索引擎--海量信息的压缩、索引和查询中文版(5/6).zip.005
二、搜索引擎索引 1. 索引构建:搜索引擎首先通过爬虫抓取互联网上的网页,然后对抓取到的数据进行分词、去重、倒排索引等处理。 2. 倒排索引:关键的搜索引擎技术,将每个词对应到包含它的文档列表,极大地提高了...
资源名称:深入搜索引擎——海量信息的压缩、索引和查询内容简介:本书是斯坦福大学信息检索和挖掘课程的首选教材之一,并已成为全球主要大学信息检索的主要教材。本书理论和实践并重,深入浅出地给出了海量信息数据...