У меня есть файл (конкретный файл, который должен быть конкретным), который я хотел бы индексировать, чтобы я мог быстро найти любую подстроку в файле, а затем найти местоположение в исходном файле fasta.На индекс подстроки диска
Это было бы легко сделать во многих случаях, используя массив Trie или подстроку, к сожалению, строки, которые мне нужно индексировать, составляют 800+ МБ, что означает, что делать их в памяти неприемлемо, поэтому я ищу разумную способ создания этого индекса на диске с минимальным использованием памяти.
(редактирование для осветления)
Я заинтересован только в заголовках белков, так и для самой большой базы данных меня интересует, это около 800 МБ текста.
Я хотел бы, чтобы найти точную подстроку в пределах времени O (N) на основе входной строки. Это должно быть использовано на 32-битных машинах, так как оно будет отправлено случайным людям, у которых, как ожидается, не будет 64-разрядных машин.
Я хочу, чтобы иметь возможность индексировать любой разрыв слова в пределах строки, до конца строки (хотя линии могут иметь длину несколько МБ).
Надеюсь, это разъяснит, что необходимо и почему текущие решения не освещены.
Я также должен добавить, что это необходимо сделать изнутри java и должно выполняться на клиентских компьютерах в различных операционных системах, поэтому я не могу использовать какое-либо конкретное решение ОС, и это должно быть программным решением.
Возможно, вы захотите немного разобраться. Что происходит быстро? Существуют ли ограничения на (размер) подстроки, которую вы будете искать? В файле содержится одна большая строка или несколько более мелких, которые нужно искать отдельно? Размер диска? «Минимальное» использование памяти? – mweerden 2008-09-10 07:25:10
Операционная система? Вам нужно регулярное выражение в строке поиска или вы ищете целые совпадения строк? – 2008-09-10 08:18:23