[IR] Time and Space Efficiencies Analysis of Full-Text Index Techniques
文章阅读:全文索引技术时空效率分析
LIU Xiao-Zhu
PENG Zhi-Yong
根据全文索引实现技术的不同,将其分为三大类:
- 索引技术 (倒排文件、签名文件 、后缀树与后缀数组)
- 压缩与索引混合技术
- 自索引技术(self-index technique).

研究表明 , 对于 1GB 的文本数据 ,
在 Solaris 系统、 Sun SPARC10 处理器及 256MB 内存的系统配置下,将每个实验执行 5 次取其平均值以减少外部因素的干扰 ,
采用 参数 b 取 5 时的 Golomb 编码 .
通过对倒排文件的倒排列表、索引词位置信息等进行压缩后与不采用压缩时相比 :
- 存储空间减少了 5 倍、
- 内存空间消耗减少了20 倍、
- CPU 资源消耗减少至少 3 倍、
- I/O 操作减少 5 倍、
- 索引创建时间至少降低 2 倍 .
这使得倒排索引的时空效率得到了极大的提高 , 压缩的倒排索引得到了广泛的应用 .

存储空间:倒排文件的存储空间低于原文本大小的15%。可见, space cost的劣势不在了!
索引创建 : 倒排文件的索引创建采用复杂性低的整数编码 , 因此创建速度快 ; 而后缀数组的创建速度一方面
依赖于所采用的压缩算法的复杂性 , 另一方面 , 为了实现由索引直接还原原始数据 , 必须附加很多其他信息 , 这
增加了索引创建的开销 .
索引更新维护 : 倒排文件支持索引的更新与维护 , 能够实现部分更新与索引重建 , 而且开销低于 45%; 但对
于后缀数组 , 当有新的数据加入或数据发生变化时 , 目前的技术还无法实现部分更新 , 只能对整个后缀数组进行
完全重排 , 并对定位函数进行重算等 . 因此难以实现索引的动态更新 , 尤其是对于大数据集 , 需要对后缀数组进
行完全重构 , 索引维护更新成本更高 .
排序查询 : 倒排文件支持排序查询功能且易于扩展 , 如支持语义相似度、文档结构查询与分离查询等功能 ;
后缀数组由于其紧凑的结构特性 , 只能完成完全匹配时的查找定位 , 难以支持相似度匹配、排序查询等功能 , 且
难以实现位置信息插入、文档结构查询、分离查询等功能 .
查询速度与定位开销 : 倒排文件的查询速度虽然有了很大提高 , 但是由于后缀数组采用基于定位函数的匹
配方式 , 能够快速计算出查询词的位置信息 , 因此与倒排文件相比 , 后缀数组在信息查询速度与定位开销上具有
明显的优势
先前的研究关注得更多的是压缩率 , 而往往忽略了索引的动态性 , 即压缩索引在查询、动态更新时是否需要先解压后才能实现相应的功能 .
而压缩率与动态性往往是相矛盾的 , 压缩带来的解码时间消耗 , 在一定程度上降低了索引的时间效率 .
自索引技术一定程度地克服了上述矛盾 , 从而使时空效率同时提高成为可能 .
目前的自索引可分为两种 : 基于倒排文件的自索引 以及 基于后缀数组的自索引. 这里只关心前者。
(原理略)
基于倒排文件的自索引的本质是以插入少量的辅助信息为代价 , 尽可能地减少压缩带来的解码时间消耗 ,
即通过辅助信息在不需要完全解码的情况下 , 实现信息的准确定位与查询功能 .
这种索引不仅具备复杂性低、简单且易于实现的优点 , 同时具有良好的查询性能和可扩展性 , 但其缺陷在于 :
一是当倒排文件中的位置信息列表被分成大量的小块时 , 插入的辅助信息不仅会导致大量的额外存储开销 , 同时由此产生的磁盘访问时间将超过压缩所带来的性能 ;
二是难以同时支持连接布尔查询与排序查询 ;
三是这种倒排文件自索引在文本显示功能上仍然依赖于原文本 .
总结与展望
索引与压缩技术的结合 , 极大地提高了索引的空间效率 . 通过压缩编码技术 , 倒排文件的大小将降低到原文本大小的 10%, 同时 , 内存空间、 CPU 资源、 I/O 操作、索引创建时间等性能都有了明显的改善 ;
压缩倒排索引仍然是应用最为广泛的索引 , 而且其应用面还在不断扩展 , 如支持结构化的 XML 查询、支持 P2P 的文本信息检索以及基于内容的多媒体音乐检索等新领域 ;
自索引技术作为索引与压缩技术的进一步发展 , 使得时间效率与空间效率的同时提高成为可能 , 一定程度地解决了时间与空间效率的矛盾问题 .
例如 , 对于同一数据集 , 采用基于倒排文件的自索引技术与不采用自索引技术相比 ,
- 对于 5~10 个词的连接布尔查询 , 处理时间减小约 5 倍 ;
- 对于排序查询 , 处理时间减小约 2~4 倍 .
- 而插入忽略信息的大小约为原始文本大小的 2%.
- 通过采用递归的方式对插入忽略信息的列表进行索引 , 并采用压缩技术 , 可以实现内存空间、存储空间与处理时间上的同时减小 .
[IR] Time and Space Efficiencies Analysis of Full-Text Index Techniques的更多相关文章
- [Algorithm] Fibonacci Sequence - Anatomy of recursion and space complexity analysis
For Fibonacci Sequence, the space complexity should be the O(logN), which is the height of tree. Che ...
- 本人AI知识体系导航 - AI menu
Relevant Readable Links Name Interesting topic Comment Edwin Chen 非参贝叶斯 徐亦达老板 Dirichlet Process 学习 ...
- Disk Space Usage 术语理解:unallocated, unused and reserved
通过standard reports查看Disk Usage,选中Database,右击,选择Reports->Standard Reports->Disk Space Usage,截图如 ...
- Building the Unstructured Data Warehouse: Architecture, Analysis, and Design
Building the Unstructured Data Warehouse: Architecture, Analysis, and Design earn essential techniqu ...
- [中英对照]Device Drivers in User Space: A Case for Network Device Driver | 用户态设备驱动: 以网卡驱动为例
前文初步介绍了Linux用户态设备驱动,本文将介绍一个典型的案例.Again, 如对Linux用户态设备驱动程序开发感兴趣,请阅读本文,否则请飘过. Device Drivers in User Sp ...
- Low overhead memory space management
Methods, apparatus, and systems, including computer programs encoded on a computer storage medium, m ...
- [20190918]shrink space与ORA-08102错误.txt
[20190918]shrink space与ORA-08102错误.txt 1.环境:SCOTT@test01p> @ ver1PORT_STRING V ...
- 【443】Tweets Analysis Q&A
[Question 01] When converting Tweets info to csv file, commas in the middle of data (i.e. locati ...
- 2016CVPR论文集
http://www.cv-foundation.org/openaccess/CVPR2016.py ORAL SESSION Image Captioning and Question Answe ...
随机推荐
- centos7环境下对防火墙的操作
我是运行了systemctl stop firewalld.service && systemctl disabl e firewalld.service命令于是显示 [root@in ...
- zabbix-agentd 安装
[root@node2 ~]# rpm -ivh http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-1.el7.ce ...
- spring cloud:Edgware.RELEASE版本中zuul回退方法的变化
Edgware.RELEASE以前的版本中,zuul网关中有一个ZuulFallbackProvider接口,代码如下: public interface ZuulFallbackProvider { ...
- GO开发环境搭建
GO开发环境搭建 1)下载GO SDK,并安装 https://golang.google.cn/dl/ 2)下载GO IDE:GOLAND,并安装 3)设置GOROOT和GOPATH 4)新建一个工 ...
- CSS实现屏幕显示与打印结果不一样的方法
文章作者:Tony Qu原创 一种方法是为屏幕显示和打印分别准备一个css文件,如下所示: 用于屏幕显示的css: <link rel="stylesheet" href=& ...
- 【HTML打印】HTML直接调用window下的打印机并执行打印任务(简单打印任务生成)
1.<button onclick="preview('data');" id="print">打印</button> 2. 3.js: ...
- iOS关于沙盒文件拷贝manager.copyItem的一个坑
记录一下: 沙盒文件操作,当需要拷贝文件时,我们可以使用如下类似方式: // 文件拷贝 func copyFile(from:String,to:String)->Bool{ if !manag ...
- Mac下必备快捷键的符号所对应的按键
Mac下快捷键的符号所对应的按键 ⌥—> option|alt ⇧—>shift ⌃—>control ⌘—>command ⎋—>esc 注: 与F6/F7/F12等F ...
- 11G新特性 -- OLTP Table Compression
之前的版本中,只能在批量加载操作时,比如direct load.create table as select 操作,才能压缩数据.在dml操作期间是无法压缩数据的. 在11g中,oracle将表压缩扩 ...
- 0x02 Spring Cloud 学习文档
每个Spring项目都有自己的; 它详细解释了如何使用项目功能以及使用它们可以实现的功能. Spring Cloud 版本 参考文档 API文档 Finchley SR2 CURRENT GA Ref ...