【问题标题】:What file format will let me search for strings in the file extremely quickly?什么文件格式可以让我非常快速地搜索文件中的字符串?
【发布时间】:2017-04-06 20:26:29
【问题描述】:

我有一个 100GB 的随机文本字符串文件,长度在 4 到 200 个字符之间,每行一个。

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

否则我很高兴能够找到以子字符串开头的行/记录,例如"foo" 找到 "footestbar" 但不是 "testbarfoo"。

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

【问题讨论】:

  • 在文件中搜索 100GB 的内容。真的吗?如果是一次就好了。如果你想要实时,我认为你应该检查基于文本的搜索引擎。例如 ElasticSearch、Apache Lucene
  • 我不太喜欢在已排序文件中记录特定字母开头的想法。如果您的文件按行按字母顺序排序,则可以在 log n 中进行二进制搜索。
  • 假设你有一个 100GB 的文件,每行 100 个字符,保留这些索引将导致大约 3GB(用于键和整数偏移)
  • 谢谢我现在正在看这个:unix.stackexchange.com/questions/247508/…
  • @UrielEli 3G 非常适合内存,但它是一个好的解决方案吗?我可以将它存储在某种简单的数据库格式中,例如 Berkeley DB

标签: python file search full-text-search hard-drive


【解决方案1】:

我认为一个好的开始可能是生成一个DAFSA。您可能必须将它与图形文件格式结合起来。

【讨论】:

    猜你喜欢
    • 2016-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-23
    • 1970-01-01
    • 2013-01-20
    • 1970-01-01
    • 2014-10-14
    相关资源
    最近更新 更多