【发布时间】:2009-08-26 02:46:22
【问题描述】:
假设我有一个包含 2 亿字的平面文件的大型字典,而我的函数需要检查字典中是否存在任何给定的字,那么最快的方法是什么?您无法将字典存储在内存中,因为您只有 1GB 的内存。您可以将它存储在数据库中,但是如果没有任何优化,查询它仍然会非常非常慢。您无法索引完整的单词,因为您没有足够的资源。
编辑:除了下面提到的文件优化方法外,还有没有数据库优化?我正在考虑创建部分索引,例如对于单词中的每 2 个字母,我创建一个索引。这会加快数据库查询吗?
【问题讨论】:
-
平面文件词典中的单词是按字母顺序排列的吗?
-
如果索引太大而无法放入 RAM,数据库会不允许您定义索引吗?
-
这似乎是一个非常人为的问题,因为 a) 我所知道的任何语言都没有接近 200M 字; b) 为什么要限制次优数据结构?
-
听起来更像是一张彩虹表,而不是一种自然语言。
-
不,这是一个现实世界的问题。硬件问题会更明确。
标签: dictionary