文章阅读:全文索引技术时空效率分析

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的更多相关文章

  1. [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 ...

  2. 本人AI知识体系导航 - AI menu

    Relevant Readable Links Name Interesting topic Comment Edwin Chen 非参贝叶斯   徐亦达老板 Dirichlet Process 学习 ...

  3. Disk Space Usage 术语理解:unallocated, unused and reserved

    通过standard reports查看Disk Usage,选中Database,右击,选择Reports->Standard Reports->Disk Space Usage,截图如 ...

  4. Building the Unstructured Data Warehouse: Architecture, Analysis, and Design

    Building the Unstructured Data Warehouse: Architecture, Analysis, and Design earn essential techniqu ...

  5. [中英对照]Device Drivers in User Space: A Case for Network Device Driver | 用户态设备驱动: 以网卡驱动为例

    前文初步介绍了Linux用户态设备驱动,本文将介绍一个典型的案例.Again, 如对Linux用户态设备驱动程序开发感兴趣,请阅读本文,否则请飘过. Device Drivers in User Sp ...

  6. Low overhead memory space management

    Methods, apparatus, and systems, including computer programs encoded on a computer storage medium, m ...

  7. [20190918]shrink space与ORA-08102错误.txt

    [20190918]shrink space与ORA-08102错误.txt 1.环境:SCOTT@test01p> @ ver1PORT_STRING                    V ...

  8. 【443】Tweets Analysis Q&A

        [Question 01] When converting Tweets info to csv file, commas in the middle of data (i.e. locati ...

  9. 2016CVPR论文集

    http://www.cv-foundation.org/openaccess/CVPR2016.py ORAL SESSION Image Captioning and Question Answe ...

随机推荐

  1. centos7环境下对防火墙的操作

    我是运行了systemctl stop firewalld.service && systemctl disabl e firewalld.service命令于是显示 [root@in ...

  2. zabbix-agentd 安装

    [root@node2 ~]# rpm -ivh http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-1.el7.ce ...

  3. spring cloud:Edgware.RELEASE版本中zuul回退方法的变化

    Edgware.RELEASE以前的版本中,zuul网关中有一个ZuulFallbackProvider接口,代码如下: public interface ZuulFallbackProvider { ...

  4. GO开发环境搭建

    GO开发环境搭建 1)下载GO SDK,并安装 https://golang.google.cn/dl/ 2)下载GO IDE:GOLAND,并安装 3)设置GOROOT和GOPATH 4)新建一个工 ...

  5. CSS实现屏幕显示与打印结果不一样的方法

    文章作者:Tony Qu原创 一种方法是为屏幕显示和打印分别准备一个css文件,如下所示: 用于屏幕显示的css: <link rel="stylesheet" href=& ...

  6. 【HTML打印】HTML直接调用window下的打印机并执行打印任务(简单打印任务生成)

    1.<button onclick="preview('data');" id="print">打印</button> 2. 3.js: ...

  7. iOS关于沙盒文件拷贝manager.copyItem的一个坑

    记录一下: 沙盒文件操作,当需要拷贝文件时,我们可以使用如下类似方式: // 文件拷贝 func copyFile(from:String,to:String)->Bool{ if !manag ...

  8. Mac下必备快捷键的符号所对应的按键

    Mac下快捷键的符号所对应的按键 ⌥—> option|alt ⇧—>shift ⌃—>control ⌘—>command ⎋—>esc 注: 与F6/F7/F12等F ...

  9. 11G新特性 -- OLTP Table Compression

    之前的版本中,只能在批量加载操作时,比如direct load.create table as select 操作,才能压缩数据.在dml操作期间是无法压缩数据的. 在11g中,oracle将表压缩扩 ...

  10. 0x02 Spring Cloud 学习文档

    每个Spring项目都有自己的; 它详细解释了如何使用项目功能以及使用它们可以实现的功能. Spring Cloud 版本 参考文档 API文档 Finchley SR2 CURRENT GA Ref ...