论文部分内容阅读
随着互联网和信息化技术的蓬勃发展,包括网页文档和其他数字化资源在内的各类信息库和知识库的规模也在飞速增长,这对负责管理和检索这些文档集合的系统(其中最典型例子就是搜索引擎)提出了存储开销和处理效率上的巨大挑战。在搜索引擎系统中,人们既希望能对海量的文档集得到良好的压缩效果,同时还希望可以在压缩后的数据上进行单个文档的原子解压和快速随机访问。这一目标可以通过一种的基于外部字典的文档集压缩算法(称为RLZ)来实现。该算法借助一个常驻于内存中的文本型字典,可以获得很好的压缩效果和解压性能。 虽然RLZ方法是目前最好的文档集压缩解决方案,然而它仍然存在一定的局限性。该方法之所以能取得很好的压缩效果,很大程度上归功于其字典生成过程中的均匀抽样机制可以较好地将待压缩集合中的频繁子串采集到字典当中。然而当系统可用内存资源有限、只能使用较小的字典时,将导致压缩性能受到明显的影响。另外,当出现与原有数据集在统计特性和频繁模式上相差较大的新数据集时,适配于原数据集的字典很有可能无法对增量数据集进行很好地压缩。本文对RLZ方法进行了如下两个方面的扩展,使得它同样可以胜任上述情况下的压缩任务。 一方面,为了保证RLZ方法在字典较小的情况下仍然可以得到较好的压缩性能,本文提出了一种高效的字典精简方法。基于RLZ字典中的某些部分在压缩过程中发挥的作用非常有限这一发现,提出了基于“子串贡献度”的不定长子串移除方法CARE。该方法首先识别出候选子串,然后通过文中提出的“自分解法”来估算该子串对压缩的贡献值,并且利用这个贡献值来指导字典的裁剪。实验表明,经过CARE算法大幅度精简后的字典,仍然可以保持很好的RLZ压缩效果。 另一方面,为了使得RLZ方法在增量数据集上同样具有较好的压缩性能,本文提出了一种借用原有集合所对应的字典来帮助压缩增量数据的解决方法——通过参考新增集合在原有字典上的压缩情况,可以仅为增量集合生成有限大小的新字典,并使用它与原有字典(中的某一部分)一起对新集合进行压缩。实验结果显示,本文所提出的方案能以很小的代价来处理大规模增量数据集,并且具有很好的可扩展性。 除此之外,本文中还提出了利用RLZ技术来改进基于SSD的搜索引擎中的摘要缓存及文档缓存模块的方法,从而达到提升查询结果摘要生成效率的目的。该部分工作主要分为三个层面进行。首先,受RLZ简洁的因子表示法启发,采用紧凑的片段表示法来取代原有的摘要缓存项;其次,得益于RLZ方法的良好压缩效果及优秀的随机解压性能,利用RLZ压缩来减少文档缓存项的单位大小。最后,还提出更适用于该场景的有偏字典生成法,以便给予高频访问文档更好的缓存效果。实验表明,上述策略不仅可以减少CPU计算耗时,同时还能降低I/O延迟。因此,摘要生成任务的吞吐效率可以得到提高。 最后,值得强调的是,尽管本文以搜索引擎作为应用场景来开展研究和讨论,然而本文中所研究的问题以及相应的解决方案在其他涉及到存储和处理大规模文档集的场景中也都是通用的。