背景:
我的CSS360小组正在尝试创建一个包含自动完成搜索功能的Android应用程序。我们将搜索的数据包含大约7000个条目,并将存储在手机本身的SQLite数据库中。最明显的方法是在用户键入的每个字符之后对数据库进行线性搜索,然后返回建议列表,这些建议是用户查询的潜在字母扩展。然而,这似乎效率很低,而且我们一直在寻找更好的选择。在我今天的另一个课程中,我的讲师简要讨论了trie数据结构,并提到它经常用于存储整个字典。可以在对数时间内检索到trie的条目(与常规旧数组的线性时间相反),因此这似乎是我们使用的一个很好的工具!不幸的是,我们已经在这个项目上已经开始了,我们都没有真正了解如何实现这一目标。到目前为止,我们所有人都编写了基本的控制台应用程序来教我们编程基础知识。我们都试图在一周的时间内通过观看YouTube视频来学习Android平台,并将数据库内容与我们团队中具有任何SQL经验的人员区分开来。我们可以认真地使用一些指针!
问题:
答案 0 :(得分:0)
sqlite应该能够合理地提供这种自动完成功能。我建议使用他们的内部索引来重新实现轮子。如果你需要做后者,那么在完成这项工作后,sqlite可能不会帮助你。
如果你想要子字符串搜索,那么full text search可能是你最好的选择。
如果你只想完成单词的开头,那么只使用他们的香草indexes应该绰绰有余。如果性能有问题,那么只需等到它们在执行查询之前输入三个字符。为快速响应设置结果限制。