论文部分内容阅读
信息化时代,数据量的激增给我们带来了机遇也带来了信息存储及检索的挑战。字符串匹配是信息检索最基本的操作,解决该问题的常用方式为索引匹配和顺序匹配。鉴于索引匹配的高效性,使用后缀数组(Suffix Array,SA)等索引结构的匹配方式逐渐代替了传统的顺序匹配。然而SA空间过大的问题,限制了其实用性。如何高效地存储SA这一索引结构,并使其支持快速查询操作,就成为了压缩索引领域重要的研究课题之一。就压缩后缀数组(Compressed Suffix Array,CSA)这一熵压缩结构而言,近年来的相关研究都以如何高效编码Ф数组为目标。本文沿袭这样的研究路线,结合Ф数组的差值序列(gap序列)针对不同文本展现出的数据特点,设计具有针对性的CSA新结构与算法,力图改善CSA面对不同类型文本输入时的压缩率及查询效率。首先,本文以GamCSA这一双层索引框架为基础,对各种类型的标准文本输入进行实验,发现不同文本具有不一样的gap序列统计特征,具体反映在其1-gap比重和1-gap-Runs的长度上,其中1-gap表示gap序列中的1值,1-gap-Runs表示gap序列中1值连续出现次数的平均值。1-gap比重越高,1-gap-Runs的长度越长,说明文本的可压缩性越好。针对这一情况,本文引入了混合编码的策略,选择合适的编码进行各类文本的编码比重实验,并以gap序列统计特征和编码比重为分类依据,提出了在高度重复文本集上表现优秀的HiCSA,以及在普通文本集上能起到性能改善作用的NorCSA两种熵压缩新结构。HiCSA结构中应用了根据实际问题进行改进的Run-length编码,能很好地处理1-gap-Runs较长的文本,对于长为n的文本T,HiCSA的空间上界为nH_k+2n log(H_k+1)+n+o(n)位,其中H_k表示文本T的k阶经验熵。NorCSA结构中应用了BV+γ的编码方式,提高了使用单一γ编码时索引的性能,并保持了2nH_k+n+o(n)位的空间上界;之后,本文围绕HiCSA和NorCSA两种新结构,设计了高效的访问及查询算法,以快速解决count,locate和extract问题。在设计查询算法时,本文对lookup-table结构做出了改进,以适应在RL-δ新编码方式下的快速解码操作;并且提出了词汇加速表这一新结构,预先存储好词汇的后缀区间,用以改善后向搜索算法的性能;最后,本文还关注了文本词频对查询操作的影响,针对采样位置判断点的分布情况,使用SA位置采样方式,提出了一种新的变长采样策略,并设计了对应的结构和算法以加快locate问题的解决。实验表明,本文提出的HiCSA和NorCSA熵压缩新结构具有较好的压缩率及查询时间,尤其在locate时间上与其他主流索引相比具有一定的优势;并且我们提出的变长采样策略也得到了有效性的验证,与定长采样相比,它能在locate时间上获得8%~70%左右性能的提升。