[论文解读] On Optimal Top-K String Retrieval
本文提出了一种用于 top-k 字符串检索的 I/O 高效外部内存索引,以线性空间实现接近最优的查询性能 $O(p/B + \log_B n + \log^{(h)}n + k/B)$ 次 I/O 操作,其中一种变体使用 $O(n\log^*n)$ 空间实现了最优的 $O(p/B + \log_B n + k/B)$ 次 I/O 操作。该方法将 top-k 检索重新解释为在树状结构上的带优先级区间 stabbing 问题,从而实现高效的外部内存处理,并在桌面搜索和电子邮件搜索等实际工作负载中实现最优性能。
Let ${\cal{D}}$ = $\{d_1, d_2, d_3, ..., d_D\}$ be a given set of $D$ (string) documents of total length $n$. The top-$k$ document retrieval problem is to index $\cal{D}$ such that when a pattern $P$ of length $p$, and a parameter $k$ come as a query, the index returns the $k$ most relevant documents to the pattern $P$. Hon et. al. \cite{HSV09} gave the first linear space framework to solve this problem in $O(p + k\log k)$ time. This was improved by Navarro and Nekrich \cite{NN12} to $O(p + k)$. These results are powerful enough to support arbitrary relevance functions like frequency, proximity, PageRank, etc. In many applications like desktop or email search, the data resides on disk and hence disk-bound indexes are needed. Despite of continued progress on this problem in terms of theoretical, practical and compression aspects, any non-trivial bounds in external memory model have so far been elusive. Internal memory (or RAM) solution to this problem decomposes the problem into $O(p)$ subproblems and thus incurs the additive factor of $O(p)$. In external memory, these approaches will lead to $O(p)$ I/Os instead of optimal $O(p/B)$ I/O term where $B$ is the block-size. We re-interpret the problem independent of $p$, as interval stabbing with priority over tree-shaped structure. This leads us to a linear space index in external memory supporting top-$k$ queries (with unsorted outputs) in near optimal $O(p/B + \log_B n + \log^{(h)} n + k/B)$ I/Os for any constant $h${$\log^{(1)}n =\log n$ and $\log^{(h)} n = \log (\log^{(h-1)} n)$}. Then we get $O(n\log^*n)$ space index with optimal $O(p/B+\log_B n + k/B)$ I/Os.
研究动机与目标
- 为了解决外部内存中 top-k 字符串检索缺乏非平凡 I/O 界限的问题,特别是针对桌面搜索和电子邮件搜索等应用中的磁盘驻留数据。
- 克服传统内部内存方法因将问题重新构想为带优先级的区间 stabbing 而导致的 $O(p)$ 次 I/O 操作瓶颈,而非最优的 $O(p/B)$。
- 设计一种线性空间索引,支持在输出未排序的情况下实现接近最优的 I/O 复杂度的 top-k 查询。
- 通过使用 $O(n\log^*n)$ 空间,实现 $O(p/B + \log_B n + k/B)$ 的最优 I/O 次数,并在已知模式定位点的情况下,支持 $O(k)$ 时间内输出有序结果。
提出的方法
- 将 top-k 文档检索问题重新表述为在树状结构上的带优先级区间 stabbing 问题,利用文档得分与模式出现位置的几何特性。
- 使用持久化链表维护与扫描线相交的区间,并按权重排序,通过前驱查找和链表遍历实现高效的 top-k 检索。
- 在广义后缀树(GST)上构建候选树结构,每个节点使用位向量标记哪些候选链接被击中,从而实现对 top-k 结果的快速选择。
- 通过在位向量中增强 rank/select 结构,支持 $O(1)$ 时间内选择 top-k 得分最高的链接,确保在小 $k$ 情况下实现最优的 $O(k)$ 查询时间。
- 集成外部内存数据结构以降低 I/O 复杂度,对任意常数 $h$ 实现 $O(p/B + \log_B n + \log^{(h)}n + k/B)$ 次 I/O 操作。
- 结合在线有序范围报告与区间 stabbing,利用 word-RAM 堆高效合并结果,实现在 RAM 中 $O(\log n + k)$ 时间的性能。
实验结果
研究问题
- RQ1是否可以在外部内存中以接近最优的 I/O 复杂度高效解决 top-k 字符串检索问题?
- RQ2是否可以通过重构问题避免传统内部内存方法中 $O(p)$ 次 I/O 操作的瓶颈?
- RQ3是否可能在支持外部内存中 top-k 查询的接近最优 I/O 复杂度的同时,实现线性空间?
- RQ4是否可以消除 $\log^*n$ 的空间开销,以实现真正最优的空间与 I/O 性能?
- RQ5当模式的定位点预先计算时,该框架是否能够支持 $O(k)$ 时间内输出有序结果?
主要发现
- 本文实现了线性空间的外部内存索引,其 I/O 复杂度为 $O(p/B + \log_B n + \log^{(h)}n + k/B)$(对任意常数 $h$),接近最优。
- 该索引的一种变体使用 $O(n\log^*n)$ 空间,实现了最优的 $O(p/B + \log_B n + k/B)$ 次 I/O 操作用于 top-k 查询。
- 在 RAM 模型中,当预先提供模式的定位点时,该框架可实现 $O(k)$ 时间内支持有序 top-k 检索,达到最优性能。
- 通过使用持久化数据结构和位向量的 rank/select 操作,实现了高效的带优先级区间 stabbing,将查询时间降低至 $O(\log\log n + k)$。
- 该方法通过将问题重新解释为区间 stabbing,优于传统 4 边形范围查询模型,避免了 I/O 高效的 4D 范围查询在实际中不可行的问题。
- 该框架适用于桌面搜索和电子邮件搜索等真实工作负载,其中 $p/B$ 和 $k/B$ 通常为小常数,因此 I/O 效率至关重要。
更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。