论文部分内容阅读
现代互联网搜索引擎普遍使用倒排索引作为存储网页信息的核心数据结构,借助倒排索,引搜索引擎能够高效存储预先抓取好网页信息,从而快速响应用户的查询.随着互联网规模的爆炸式扩张,需要存储的信息量迅速增长,针对倒排索引的压缩工作也随之变得越来越重要.传统的倒排索引压缩方法主要基于算术编码理论,虽然这些方法在压缩倒排索引上取得了一定的效果,但是它们并不能很好的应对倒排索引规模日益增大的挑战.因此,提出新的压缩倒排索引的方法具有很大的意义.文法压缩理论可以充分挖掘倒排索引中的重复信息并且进行高效的表示,并且具备一定的通用性,是一种很有潜力的压缩方法.本文主要借鉴一种以"上下文无关文法"作为理论核心的压缩方法.一方面,这种方法可以把原始的倒排索引转化为"上下文无关文法形式的倒排索引",从而可以在进一步进行算术压缩后达到更高的压缩率.另一方面,为了在提升压缩性能的同时尽可能的不损失查询性能,这种方法探讨了如何存储"上下文无关文法形式的倒排索引",从而可以在压缩后的倒排索引上直接进行查询,以便最大程度的减少需要解压的内容.本文主要探讨如何使用"上下文有关文法"对倒排索引进行压缩.本文提出的压缩方法先将原始的倒排索引转化为"上下文有关文法形式的倒排索引",然后再对转化后的倒排索引进行算术压缩.一方面,上下文有关文法是一种比上下文无关文法表示能力更强的形式文法.在利用上下文无关文法进行压缩时,文本中的重复信息被挖掘为非终结符进行存储,一个非终结符只能代表一种特定的重复信息.而利用上下文有关文法,一个非终结符可以结合不同的上下文代表多种不同的重复信息,从而可以进行更充分的挖掘以达到更好的压缩率.另一方面,本文结合上下文有关文法和倒排索引的特点,对原始的倒排索引采用了d-gap预处理,以提升倒排索引的重复率,并减小文档号数值,使得文法挖掘和算术压缩更为有效.如何在提升压缩率的同时保障查询效率是一个重要的问题.本文通过设计存储"上下文有关文法形式的倒排索引"的方法,达到了在压缩后的倒排索引上直接进行查询的效果.同时,本文也设计了相应数据结构,使得通过上下文可以快速检索出非终结符所对应的信息,从而最小程度的减小由于提升压缩率而带来的性能损失.此外,本文还提出了裁剪策略,以提升压缩方法的灵活性,以适应更多不同特点的倒排索引.本文在Gov2数据集上进行了实验和评测工作.利用算术压缩方法,以上下文无关文法为核心的压缩方法以及本文算法的压缩方法分别对12G左右的倒排索引进行了压缩.实验表明,文法压缩方法普遍优于算术压缩方法.以上下文无关文法为核心的压缩方法可以将排索引部分压缩到1.5G左右,而使用本文的方法可以使得倒排索引部分所占用的空间进一步减小到1G左右.