У меня есть файл (точнее, файл fasta), который я хотел бы проиндексировать, чтобы я мог быстро найти любую подстроку в файле и затем найти местоположение в исходном файле fasta.
Это было бы легко сделать во многих случаях, используя массив Trie или подстроку, к сожалению, строки, которые мне нужно индексировать, имеют размер 800+ МБ, что означает, что выполнение их в памяти недопустимо, поэтому я ищу разумный способ создать этот индекс на диске с минимальным использованием памяти.
(редактировать для уточнения)
Меня интересуют только заголовки белков, поэтому для самой большой базы данных, которая меня интересует, это около 800 МБ текста.
Я бы хотел найти точную подстроку в течение O (N) времени на основе входной строки. Это должно быть применимо на 32-битных машинах, так как оно будет отправлено случайным людям, которые не должны иметь 64-битные машины.
Я хочу иметь возможность индексировать любой разрыв слова в строке до конца строки (хотя длина строки может составлять несколько МБ).
Надеемся, что это проясняет, что нужно и почему нынешние решения не освещают.
Я должен также добавить, что это должно быть сделано изнутри java и должно выполняться на клиентских компьютерах в различных операционных системах, поэтому я не могу использовать какое-либо решение для конкретной ОС, и это должно быть программным решением.