Skip to main content
QUICK REVIEW

[论文解读] Two simple full-text indexes based on the suffix array

Szymon Grabowski, Marcin Raniszewski|arXiv (Cornell University)|May 22, 2014
Algorithms and Data Compression参考文献 7被引用 3
一句话总结

本文提出了两种基于后缀数组的全文索引:SA-hash 通过使用哈希表缩小初始搜索区间来加速模式搜索;FBCSA 是一种紧凑的、基于分块的后缀数组变体,专为快速单细胞访问而优化。SA-hash 在额外消耗 0.2n–1.1n 字节空间的情况下,将标准后缀数组的搜索速度提升了 2–3 倍;FBCSA 在相似压缩率下,相比相关紧凑索引实现了数倍的单细胞访问速度提升,但在批量提取任务中表现较差。

ABSTRACT

We propose two suffix array inspired full-text indexes. One, called SA-hash, augments the suffix array with a hash table to speed up pattern searches due to significantly narrowed search interval before the binary search phase. The other, called FBCSA, is a compact data structure, similar to M{ä}kinen's compact suffix array, but working on fixed sized blocks. Experiments on the Pizza~\&~Chili 200\,MB datasets show that SA-hash is about 2--3 times faster in pattern searches (counts) than the standard suffix array, for the price of requiring $0.2n-1.1n$ bytes of extra space, where $n$ is the text length, and setting a minimum pattern length. FBCSA is relatively fast in single cell accesses (a few times faster than related indexes at about the same or better compression), but not competitive if many consecutive cells are to be extracted. Still, for the task of extracting, e.g., 10 successive cells its time-space relation remains attractive.

研究动机与目标

  • 设计更快速的全文索引,优先考虑搜索性能而非内存压缩,尤其适用于对速度要求较高的应用场景。
  • 通过在标准后缀数组中引入辅助数据结构,探索实用的空间-时间权衡。
  • 提出一种针对 Mäkinen 的紧凑后缀数组的紧凑、分块对齐变体,支持对单个 SA 单元的高效随机访问。
  • 评估基于后缀数组的索引中,速度、空间与访问模式(单次访问 vs. 连续访问)之间的性能权衡。

提出的方法

  • SA-hash 通过在后缀数组上附加一个哈希表,将所有长度为 k 的前缀(例如 k=3–4)的起始与结束索引区间存储起来,从而实现对二分查找范围的快速缩小。
  • 该哈希表基于文本中所有可能的 k 长度前缀构建,每个条目将一个前缀映射到后缀数组中所有以该前缀开头的后缀所处的区间 [l, r]。
  • FBCSA 将后缀数组划分为固定大小的块(bs = 32 或 64),仅存储采样后的 SA 值,并采用压缩布局以实现空间效率。
  • 对于每个块,FBCSA 通过采样步长 ss 显式存储少量 SA 值,并利用查找表重建中间值,从而实现快速随机访问。
  • 该结构采用紧凑表示,与 32 字节边界对齐,提升了内存访问效率并减少了空间占用。
  • 两种索引均在 Pizza & Chili 200 MB 数据集上进行评估,性能指标包括模式搜索(计数)、单细胞访问和连续单元提取的时间。

实验结果

研究问题

  • RQ1能否有效利用哈希技术通过缩小初始搜索区间,来加速基于后缀数组的全文索引中的模式搜索?
  • RQ2与现有紧凑索引相比,分块紧凑后缀数组变体(FBCSA)在单细胞访问速度和空间使用方面表现如何?
  • RQ3在后缀数组查询中,使用哈希表预计算区间边界时,空间开销与搜索速度之间的权衡如何?
  • RQ4采样步长(ss)和块大小(bs)如何影响 FBCSA 在随机与连续单元访问模式下的性能与空间使用?
  • RQ5尽管未针对批量访问进行优化,FBCSA 是否能在小范围提取(例如 5–10 个连续单元)中实现具有竞争力的性能?

主要发现

  • SA-hash 在模式搜索(计数查询)方面相比标准后缀数组实现了 2–3 倍的加速,空间开销为 0.2n 到 1.1n 字节之间,具体取决于数据集和 k 值。
  • SA-hash 的性能提升归因于在二分查找前显著缩小了搜索区间,从而减少了所需比较次数。
  • FBCSA 在单细胞 SA 访问方面比 MakCSA 和 LCSA/Psi 快数倍,在相似或更优的压缩率下实现了具有竞争力的性能。
  • 在连续单元访问(例如 5–10 个单元)方面,FBCSA 仍具竞争力,尤其在采样步长(ss)较小时表现出次线性时间增长,尽管在大范围提取任务中仍不及专用索引。
  • 在计数查询方面,FBCSA 在 DNA 和英文数据集上与 MakCSA 表现相当,但在 XML 和源代码数据集上显著更慢,尤其在对数尺度下。
  • SA-hash 中查找表(LUT2, LUT3)的空间开销在 200 MB 数据集上降低了约 4 倍,表明其在更大文本上的可扩展性。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。