【发布时间】:2012-12-29 22:32:18
【问题描述】:
我正在构建一个拼字游戏,并根据 wordDictionary 验证单词。
在我的第一次尝试中,我将字典加载到一个数组中并进行了二进制搜索来验证。
现在我改用 sqlite,所以我不必将整个 dict 保存在内存中,并减少加载时间。
我有两个挑战:
查询数据库以查看其中是否包含单词的最有效方法是什么?
如何为一组字母找到所有可能的单词...当我将 wordDictionary 放在一个数组中时,我可以遍历整个内容并验证每个单词。查询每一行(约 700,000 行)并使用 sqlite 进行验证会非常慢。
【问题讨论】:
-
对于整个单词,您可以将每个单词单独设置为一行,并在其上建立索引。应该很快。然而,找到“所有可能的词”需要一些实际的编程。
-
感谢您的回复。我将所有单词放在单独的一行中。您如何构建查询以获得最佳性能?谢谢
-
建立索引并进行查询。应该很简单。
-
问题
CREATE INDEX ... ON ...(...). -
对于“所有可能的单词”,一种方法是选择所有单词,例如,选择与图块中的一个组合对应的 3 个字母前缀的单词,然后旋转返回的部分匹配项。可以创建一个单独的 3 字母列(带索引),也可以在原始列上使用稍微高级的查询。
标签: ios objective-c sql xcode sqlite