我有一个要索引的文件(具体来说是 fasta 文件),以便我可以快速找到文件中的任何子字符串,然后在原始 fasta 文件中找到该位置。
在许多情况下,使用 Trie 或子字符串数组很容易做到这一点,不幸的是,我需要索引的字符串是 800+ MB,这意味着在内存中执行它们是不可接受的,所以我正在寻找一种合理的方法来创建它磁盘上的索引,内存使用量最少。
(编辑澄清)
我只对蛋白质的标题感兴趣,所以对于我感兴趣的最大数据库,这是大约 800 MB 的文本。
我希望能够根据输入字符串在 O(N) 时间内找到确切的子字符串。这必须在 32 位机器上可用,因为它将被运送给随机的人,他们预计不会拥有 64 位机器。
我希望能够针对一行中的任何断字进行索引,直到行尾(尽管行可能有几 MB 长)。
希望这可以阐明需要什么以及为什么给出的当前解决方案没有启发性。
我还应该补充一点,这需要在 java 中完成,并且必须在各种操作系统的客户端计算机上完成,所以我不能使用任何特定于操作系统的解决方案,它必须是一个编程解决方案。