2016-11-23 51 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。您可能必須將其與圖形文件格式結合使用。