2016-11-23 52 views
2

我有一个100GB的随机文本字符串,长度为4到200个字符,每行一个。什么文件格式会让我非常快速地搜索文件中的字符串?

我希望能够在文件中的任何字符串中找到一个字符串,例如如果可能的话,在“footestbar”中发生任何“测试”。

否则,我会很高兴能够找到以子串开头的行/记录,例如, “foo”找到“footestbar”而不是“testbarfoo”。

我在考虑对文件进行一次排序,然后记录带有“a”行的行,其中带有“b”的行开始的位置等。这会让我快速跳到正确的部分并缩短它的时间需要。我可以通过记录所有三个字符组合开始更快的位置来进一步改善,但有些事情告诉我有更好的方法。

+1

在文件中搜索100GB的内容。真?如果是一次,那很好。如果你想要实时,我想你应该检查基于文本的搜索引擎。例如ElasticSearch,Apache Lucene –

+0

我不太喜欢在排序文件中记录特定字母开始的想法。如果你的文件按字母顺序排列,你可以在日志n中进行二分搜索。 – BoltKey

+0

假设你有一个100GB的文件,平均线为100个字符,保持这些索引会导致大约'3GB'(对于键和整数偏移) – Uriel

回答

1

我认为一个好的开始可能是产生一个DAFSA。您可能必须将其与图形文件格式结合使用。