作为序言,我正在使用Google App Engine,它不允许加入JOINS或全文搜索。
问题:我正在尝试构建自动完成搜索栏(例如Google即搜搜索)。为了解释,假设数据库中的每个条目都是一个没有空格的大字符串。如果我输入“cr”,我会得到一个自动完成辅助,其中包含以“cr”开头的所有字符串。我想出了一种在Google App Engine中实现此搜索的方法,但每次在输入搜索栏中按下某个键时,将查询发送到服务器似乎是一个可怕的想法。
我认为客户端和服务器端缓存的组合可以帮助有效地做到这一点?有人有什么想法吗?或者只是最佳做法的提示?谢谢。
答案 0 :(得分:1)
每次按一次键或每1秒钟,可能会执行类似“请求最多50个选项”的操作,以较少的频率为准。我认为一系列的帖子请求将是一个很好的解决方案。
在服务器上,您应该期望多个相关查询,因此,即使您一次只向客户端发送50个查询,也可以缓存1000个结果,如果下一个查询将您带到这些结果的子集,则会受益。
答案 1 :(得分:0)
对于服务器经常进行频繁查询 - 无论是每次按键还是稍微暂停一下,都没办法。您可以通过让服务器不仅发送当前字符串的建议,而且还发送它认为最有可能的下一个字符的内容来改进这一点,从而使客户端在某些情况下无需查询。不过,您的主要关注点可能是确保服务器端的快速和高效。