выполнить поиск в очень большом файле ARPA в очень короткое время в Java - PullRequest
2 голосов
/ 26 февраля 2011

У меня есть файл ARPA, который составляет почти 1 ГБ. Я должен сделать поиск в нем менее чем за 1 минуту. Я много искал, но пока не нашел подходящего ответа. Я думаю, что мне не нужно читать весь файл. Мне просто нужно перейти к определенной строке в файле и прочитать всю строку. Строки файла ARPA имеют разную длину. Я должен отметить, что файлы ARPA имеют определенный формат.

Формат файла

\data\

ngram 1=19

ngram 2=234

ngram 3=1013

\1-grams:

-1.7132 puluh -3.8008

-1.9782 satu -3.8368

\2-grams:

-1.5403 dalam dua -1.0560

-3.1626 dalam ini 0.0000

\3-grams:

-1.8726 itu dan tiga

-1.9654 itu dan untuk

\end\

Как вы видите в примере файла, у меня есть 19 строк по 1 грамму, 234 строки по 2 грамма и 1013 строк по 3 грамма. Я передаю строковую часть строки программе и получаю числа, которые находятся слева и справа от строки. Входная строка может помочь мне узнать, в какой части файла я должен выполнять поиск. Мне нужно найти способ не читать файл полностью, потому что мой файл очень большой и чтение всего файла занимает много времени. Я думаю, что это хороший способ перейти к определенной строке в файле без использования индексного файла и доступа ко всей строке.

Будет здорово, если вы поможете мне выполнить мое задание.

1 Ответ

0 голосов
/ 26 февраля 2011

Я не знаю, что такое файл ARPA.Я предполагаю, что это какой-то файл, содержащий текст.

Что вы хотите сделать - это сначала проиндексировать файл, чтобы можно было связать номера строк в файле со строками.

Это большой файлтак что вы, вероятно, сохранили бы свой индекс в отдельном файле.

Сначала, перед поиском пользователя, вы должны запустить свой индекс.Затем вы будете искать в индексе номера строк, в которых найдена строка, которую ищет пользователь.

...