倒排索引压缩

索引压缩的作用

  1. 提高磁盘利用率
  2. 提高内存缓存利用率
  3. 提高磁盘到内存的传输率

词典压缩

  1. 将词典看成单一字符串,每个词结尾处保存指向下一个词的指针。
  2. 按块存储
  3. 前端编码(公共前缀)
  4. 完美哈希(无法动态更新)

倒排记录表压缩

  1. Delta编码
  2. 可变字节码
  3. 基于位编码(γ编码)

参考资料:《信息检索导论》-- 第五章

时间: 2024-11-25 18:59:55

倒排索引压缩的相关文章

倒排索引压缩:改进的PForDelta算法

由于倒排索引文件往往占用巨大的磁盘空间,我们自然想到对数据进行压缩.同时,引进压缩算法后,使得磁盘占用减少,操作系统在query processing过程中磁盘读取效率也能提升.另外,压缩算法不仅要考虑压缩效果,还要照顾到query processing过程的解压缩效率. 总的来说,好的索引压缩算法需要最大化两个方面: 1.减少磁盘资源占用 2.加快用户查询响应速度 其中,加快响应速度比减少磁盘占用更为重要.本文主要介绍PForDelta压缩算法,其简单易懂,能够提供可观的数据压缩,同时具备非常

Elias-Fano编码算法——倒排索引压缩用,本质上就是桶排序数据结构思路

Elias-Fano编码过程如下:把一组整数的最低l位连接在一起,同时把高位以严格单调增的排序划分为桶. Example: 2, 3, 5, 7, 11, 13, 24 Count in unary the size of upper bits "buckets" including empty ones:110=>计算最大的桶,此处是110,计算方法如下:Maximum bucket: [U / 2^l]Example: [24 / 2^2] = 6 = 110 连接最低位:

倒排列表压缩算法汇总——分区Elias-Fano编码貌似是最牛叉的啊!

来看看倒排索引压缩.压缩是拿CPU换IO的最重要手段之一,不论索引是放在硬盘还是内存中.索引压缩的算法有几十种,跟文本压缩不同,索引压缩算法不仅仅需要考虑压缩率,更要考虑压缩和解压性能,否则会解压太慢而起不到CPU换IO的作用.早期的索引设计里,在尝试了几十种编码之后,基本都确定性采用差分编码+可变长字节编码.差分的目的在于让索引的文档ID尽可能小,因为压缩小的整数总是比大整数更有效.在索引构建算法中,有一类工作叫做"文档重排",目的就是通过对文档索引顺序的重新排列,使得索引posti

搜索引擎倒排索引表压缩:gamma编码

当你每天打开电脑,在百度搜索框中输入你要搜索的内容,按下回车之后,你可能不会意识到,有无数台主机在飞速运转,对比了数百万条记录,经过初步结果集生成.相关度打分.结果排序.摘要生成之后,才最终在你的屏幕上打出了你想要的结果.这一切仅仅发生在几毫秒之间. 是什么保证了如此迅速的检索速度呢?良好的索引构建是其中的要素之一.通常情况下,搜索引擎内部会为每个网页或文章分配一个数字id,用这个id代表这个网页或者文章.构建索引的时候,采用分词工具将这些网页或者文章分成一个个词,并网页id存储在称为倒排索引表

倒排索引PForDelta压缩算法——基本假设和霍夫曼压缩同

PForDelta算法 PForDelta算法最早由Heman在2005年提出,它允许同时对整个chunk数据(例128个数)进行压缩处理.基础思想是对于一个chunk的数列(例128个),认为其中占多数的x%数据(例90%)占用较小空间,而剩余的少数1-x%(例10%)才是导致数字存储空间过大的异常值.因此,对x%的小数据统一使用较少的b个bit存储,剩下的1-x%数据单独存储. 举个例子,假设我们有一串数列23, 41, 8, 12, 30, 68, 18, 45, 21, 9, ...取b

【Hadoop基础教程】9、Hadoop之倒排索引

开发环境 硬件环境:Centos 6.5 服务器4台(一台为Master节点,三台为Slave节点) 软件环境:Java 1.7.0_45.hadoop-1.2.1 1.倒排索引 倒排索引是文档检索系统中最常用的数据结构,被广泛用于全文搜索引擎.它主要是用来存储某个单词(或词组)在一个文档或一组文档的存储位置的映射,即提供了一种根据内容来查找文档的方式.由于不是根据文档来确定文档所包含的内容,而是进行了相反的操作(根据关键字来查找文档),因而称为倒排索引(Inverted Index).通常情况

倒排索引-搜索引擎的基石

文章转自:http://blog.csdn.net/hguisu/article/details/7969757 1.概述       在关系数据库系统里,索引是检索数据最有效率的方式,.但对于搜索引起,他它并不能满足其特殊要求: 1)海量数据:搜索引擎面对的是海量数据,像Google,百度这样大型的商业搜索引擎索引都是亿级甚至几千的网页数量 ,面对如此海量数据 ,使得数据库系统很难有效的管理. 2)数据操作简单:搜索引擎使用的数据操作简单 ,一般而言 ,只需要增. 删. 改. 查几个功能 ,而

Lucene 工作原理 之倒排索引

1.简介 倒排索引源于实际应用中需要根据属性的值来查找记录.这种索引表中的每一项都包括一个属性值和具有该属性值的各记录的地址.由于不是由记录来确定属性值,而是由属性值来确定记录的位置,因而称为倒排索引(inverted index).带有倒排索引的文件我们称为倒排索引文件,简称倒排文件(inverted file). 倒排文件(倒排索引),索引对象是文档或者文档集合中的单词等,用来存储这些单词在一个文档或者一组文档中的存储位置,是对文档或者文档集合的一种最常用的索引机制. 搜索引擎的关键步骤就是

海量数据处理之倒排索引

一,什么是倒排索引 问题描述:文档检索系统,查询那些文件包含了某单词,比如常见的学术论文的关键字搜索. 基本原理及要点:为何叫倒排索引?一种索引方法,被用来存储在全文搜索下某个单词在一个文档或者一组文档中的存储位置的映射. 以英文为例,下面是要被索引的文本: T0 = "it is what it is" T1 = "what is it" T2 = "it is a banana" 我们就能得到下面的反向文件索引: "a":