【发布时间】:2011-11-23 17:03:31
【问题描述】:
我有一个N-grams 的大型数据库(原始未压缩文本约为 2 TB)。 4-gram 的示例行如下所示:
cat in the cradle 2
cat in the hat 187
cat in the window 32
即4 个字符串文本,带有一个(可能很大)整数 (w1,w2,w3,w4,c)。我已经设法将数据放入带有[w1,w2,w3] 索引的数据库中。查找第一个单词与给定查询匹配并且最后一个单词是百搭的:
SELECT * FROM db WHERE (w1="cat" AND w2="in" AND w3="the")
很快。我对那个查询和第一个词是狂野的查询都感兴趣:
SELECT * FROM db WHERE (w2="in" AND w3="the" AND w4="hat")
无论我如何设计索引或数据库,查询都很慢或数据库大小膨胀到极端。此外,在我的计算机上构建索引需要几天时间,因此实验速度很慢。我正在寻找有关如何管理此类查询的建议。我认为我没有足够的硬盘空间来为[w1,w2,w3] 和[w2,w3,w4] 建立索引,所以任何答案都应该尽量适应这些限制。
【问题讨论】:
标签: database database-design language-agnostic