对于随机数据的高效搜索索引,有哪些算法或方法?

时间:2012-09-26 19:56:03

标签: algorithm search data-structures indexing

我需要一个“出发点”来研究用于在大量随机数据中查找随机字符串的高效搜索算法,方法和技术的选项。我刚刚学习这些东西,所以任何人都有这方面的经验?以下是我想要优化的一些条件:

  1. 第一个想法是在搜索索引等方面最小化文件大小 - 所以最小的索引,甚至更好 - 即时搜索。
  2. 要搜索的数据是大量完全随机的数据 - 比如,随机二进制0和1,没有可感知的模式。千兆字节的东西。
  3. 提供一个同等随机的搜索字符串,比如说0111010100000101010101在一堆随机数据中找到同一个字符串的最有效方法是什么?性能等方面的权衡是什么?
  4. 需要找到该搜索字符串的所有实例,因此这似乎是限制要实现的解决方案类型的重要条件。
  5. 任何提示,线索,技术,维基文章等都将不胜感激!我现在正在研究它,看起来很有趣。感谢。

1 个答案:

答案 0 :(得分:2)

一种简单的方法是在可搜索数据的所有可能的N字节子串上构建索引(N = 4或8或类似的东西)。索引将从小块映射到该块发生的所有位置。

如果要查找值,请取前N个字节并使用它们查找所有可能的位置。您需要验证当然的所有位置。

N的高值意味着更多的索引空间使用和更快的查找,因为将找到更少的误报。

这样的索引可能是基本数据的一小部分。


第二种方法是将可搜索的数据分成N个字节的连续,非重叠块(N = 64左右)。将每个块散列到较小的M(M = 4或8左右)。

这样可以节省大量的索引空间,因为您不需要所有重叠的块。

查找值时,您可以通过查找要查找的字符串的所有连续重叠子字符串来查找候选匹配项。这假设要找到的字符串大小至少为N * 2个字节。