1

有没有办法在 Javascript 中对文本文件中的特定键进行基于磁盘的二进制搜索?文本文件太大而无法加载到内存中,但按键值排序。特别是,我正在寻找一种在 Javascript中模仿 Perl 的Search::Dict功能的方法。

例如,如果我有一个文件 foo.txt:

a 1
b 10
c 5
z 4

look(c,foo.txt)c 5应该通过执行二进制搜索而不是线性遍历文件来返回行' '。

4

2 回答 2

1

并非如此,只有当您可以识别记录开始时,二进制搜索才真正可行。你似乎有可变长度的记录,所以除非你创建一个行起始偏移量数组,否则它不会工作。

正如 Nikhil 在评论中正确指出的那样,一种方法是根据文件大小对文件进行二进制分割,然后从那里找到最近的行。这仍然是相对有效的(即,比顺序搜索要好得多)

于 2009-02-13T01:08:07.107 回答
1

我不知道 Javascript,但是如果你可以进行随机搜索,你可以通过搜索到当前块的中点(以字节为单位)进行二进制搜索,然后继续前进,直到你消耗了一个换行符,只要您“知道”您的密钥针对换行符。

但是,在某些情况下您需要向后行进,因此您可能会在了解文件缓冲的情况下进行搜索,这样后退步骤不会很昂贵。

如果您不处理 ASCII 文件,我想这可能会有点麻烦。

于 2009-02-13T01:26:40.447 回答