其中bpo-每个事件(occurrence)的比特数,bpr-每个记录的比特数,cpo-每个事件的周期数,cpr-每条记录的周期数。
我们可以假设1.4GB的多级指引文件列表通过最高效的方案(根据表1)被压缩,载入与解压的总代价
U≈T+EnA+dn,其中U是总时间,T是寻道时间(seek time),EnA是读需要的时间,dn是在内存中解压的时间,n是被读取的已压缩整数的量。
当n很大时,寻道时间就可以忽略,解压方案的性能P由读和解压时间来决定,P≈EA+d;
当n趋于0的时候,性能完全取决于寻道时间,P≈T,P≈T=(M-C)*R+C。
其中M表示测量的磁盘平均寻道时间,C是时钟周期固定寻道时间,R是压缩后的文件占压缩前的比率。
通过这个式子计算可得出当编码的整数数目很小的时候,二元插值编码性能最好,但是在速度上Golomb编码要超过其它的编码,当数目越来越大的时候,变长字节编码是最高效的。如图4示(其中横坐标表示记录数,纵坐标表示时钟周期数)。
总结起来,在多级指引文件信息检索的过程中,处理长的多级指引文件是一个瓶颈,所以随着多级指引文件的增加而提高性能是一个好的解决方法。当多级指引文件小的时候,吞吐量由磁盘寻道时间决定,这个时间是与磁盘文件的长度相关的。减少文件的长度就会减少磁盘寻道的长度,选择基于最小化文件的压缩是最好的(例如Golomb)。随着文件长度的不断增加,磁盘寻道时间变得不那么重要,吞吐量与解压速度密切相关,所以变长字节编码最合适。如果磁盘空间需要额外的开销,推荐用Golomb压缩算法,使用Golomb算法可以使文件压缩的更小并且解压速度比gamma和delta算法更快。由Moffat和Zobel提出的使用Golomb算法表示文档号gamma算法表示词频的方法不如使用Golomb同时表示文档号和词频高效。
4 置入文件阈值(Posting list threshold)
置入文件阈值也称Topdocs,实际上是一种有损压缩(lossy compression),就是说有的信息可能被丢弃。
这个算法的主要思想是,对多级指引索引I进行修剪,每一个词语t对应n个文档d,将那些权值A(d,t)很小并且对系统准确性影响很小的文档进行修剪,只保存权值最高的k篇(TOP K)。
算法描述:
为了评价Topdocs算法对精确率的影响,我们应用TREC(Text Retrieval Conference)的官方结果,下表说明了提交给TREC运行的准确度,结果显示P@10(threshold为10)在索引修剪之后基本上没什么变化,并且在平均精确率(MAP)上的差别是可以忽略的。
ε
索引大小
修剪率(%)
MAP
P@10
0
3.53GB
0
0.211
0.362
0.05
3.15GB
10.7
0.207
0.362
0.1
2.9GB
17.8
0.205
0.360
TREC实验结果说明Topdocs方法有可能会丢掉索引中的一些重要信息,但是却可以和包括全部索引的查询效果一样好。用这种方法,网络搜索引擎通过转移那些对搜索结果没什么影响的数据来减少存储大量索引的负担,避免了检索整个置入文件,显着的提高了效率。实验结果证明可以减少40%的索引空间,并且可以达到相同的,只是在MAP上有点降低,同时也不适用于布尔查询。
5 总结
基于多级指引索引的两种不同的高效策略,实际上是有损压缩与无损压缩的包含的两个范畴。它们都是为了提高查询索引效率,也就是提高搜索引擎的检索效率。不管是那一种方法,都有其优点与弊端,但这两种不同的高效策略并不矛盾,可以综合应用,为进一步优化索引结构、提高效率服务。
参考文献
[1] Scholer F,Wiliams H,iannis J.Compression of inverted indexes for fast query evaluation [ J ].ACM Transactions on Information Systems,2002 (8):222 —229
P. Elias. Universal codeword sets and representations of the integers. IEEE Transactions on Information Theory,IT-21(2):194-203, Mar. 1975.
Grossman, Frieder, Goharian. Information Retrieval Compression. 2002.
Navarro G, Moura E, Neubert M. Adding compression to block addressing inverted indexes[J]. Information Retrieval, 2000, 3(1): 49-77
Vo Ngoc Anh and Alistair Moffat in the paper "Inverted Index Compression using Word-Aligned Binary Codes", Information Retrieval 8(1):151-166, January 2005
Moffat and L. Stuiver. Binary interpolative coding for effective index compression. Information Retrieval, 3(1):25–47, July 2000.
Peter Fenwick. Punctured Elias Codes for variable-length coding of the integers. 1996(12)
Jim Meany. Gomoly Coding Notes.2005(10)
David Carmel, Einat Amitay, Miki Herscovici, Yoelle Maarek, Yael Petruschka, Aya Soffer. Juru at TREC 10—Experiments with Index Pruning. IBM Labs, Haifa University, Haifa 31905, Israel.
[10] Aandrew Trotman. Compressing Inverted Files. Information Retrieval, 6, 5–19, 2003
[11] 涂新辉,何婷婷,罗 景. 一种全文检索系统的设计与实现. 计算机工程.2005.9
[12] 闫宏飞. 可扩展Web信息搜集和检索系统. 北京大学网路与分布式实验室,2002(9)