在java中用非常短的时间在一个非常大的ARPA文件中搜索

我有一个几乎1 GB的ARPA文件。 我不得不在不到1分钟的时间里搜索它。 我搜索了很多,但我还没有找到合适的答案。 我想我不必阅读整个文件。 我只需要跳转到文件中的特定行并阅读整行。 ARPA文件的行长度不同。 我必须提到ARPA文件具有特定格式。

文件格式

 \数据\

 ngram 1 = 19

 ngram 2 = 234

 ngram 3 = 1013

 \ 1-克:

 -1.7132 puluh -3.8008

 -1.9782 satu -3.8368

 \ 2克:

 -1.5403 dalam dua -1.0560

 -3.1626 dalam ini 0.0000

 \ 3-克:

 -1.8726 itu dan tiga

 -1.9654 itu dan untuk

 \结束\

正如您在样本文件中看到的,我有19行1克,234行2克和1013行3克。 我将该行的字符串部分提供给程序,并获取字符串左侧和右侧的数字。 输入字符串可以帮助我知道我必须在哪个部分搜索文件。我必须找到一种不完全读取文件的方法,因为我的文件非常大并且读取整个文件需要花费很多时间。 我认为这是跳转到文件中特定行而不使用索引文件和访问整行的好方法。

如果你能帮助我完成任务,那将是很棒的。

我不知道ARPA文件是什么。 我假设它是某种包含文本的文件。

您要做的是首先索引文件,以便将文件中的行号与字符串相关联。

这是一个大文件,因此您可能将索引存储在单独的文件中。

首先,在用户搜索之前,您将运行索引。 然后,您将在索引中搜索找到用户正在查找的String的行号。