【发布时间】:2010-07-15 12:53:26
【问题描述】:
我正在开发一个简单的法语词典单词应用程序,其中包含 15 万个单词和定义。 我正在寻找最好的方法来做到这一点。
首先我使用 150k 字的 sqlite bdd。 我使用 LIKE 命令进行单词搜索,但速度很慢 例如:SELECT * FROM words WHERE word LIKE '%avoi%' LIMIT 0,50; 用于搜索包含 'avoi' 的单词,例如 'avoir' 或 'savoir'。 我的表有单词列索引,但 LIKE 不使用索引,所以它在 3GS 上非常慢(2-5)。
在我使用 fts3 扩展关闭 sqlite 以使用 MATCH 命令后 例如:SELECT * FROM words WHERE word MATCH 'avoi*' LIMIT 0,50; 在 3GS 上要好得多(0,1-0,15s),但它只搜索以 'avoi' 开头的单词,如 'savoir' 不在结果中。 MATCH 命令不适用于 'avoi'
之类的语法您对优化此文本搜索有什么想法吗?
我有一个非常好的 iphone 应用程序示例:Dixel (Robert Disctionnary),他使这种搜索速度非常快。对该方法有什么想法吗?
感谢您的回答。
【问题讨论】:
-
我打算建议尝试prefix tree, or trie,但这不会帮助您处理包含子字符串的单词而不是单词的开头......
标签: iphone iphone-sdk-3.0 sqlite