我需要一个“出发点”来研究用于在大量随机数据中查找随机字符串的高效搜索算法,方法和技术的选项。我刚刚学习这些东西,所以任何人都有这方面的经验?以下是我想要优化的一些条件:
任何提示,线索,技术,维基文章等都将不胜感激!我现在正在研究它,看起来很有趣。感谢。
答案 0 :(得分:2)
一种简单的方法是在可搜索数据的所有可能的N字节子串上构建索引(N = 4或8或类似的东西)。索引将从小块映射到该块发生的所有位置。
如果要查找值,请取前N个字节并使用它们查找所有可能的位置。您需要验证当然的所有位置。
N的高值意味着更多的索引空间使用和更快的查找,因为将找到更少的误报。
这样的索引可能是基本数据的一小部分。
第二种方法是将可搜索的数据分成N个字节的连续,非重叠块(N = 64左右)。将每个块散列到较小的M(M = 4或8左右)。
这样可以节省大量的索引空间,因为您不需要所有重叠的块。
查找值时,您可以通过查找要查找的字符串的所有连续重叠子字符串来查找候选匹配项。这假设要找到的字符串大小至少为N * 2个字节。