这个问题很容易让人知道。让 Web 应用程序的客户端自动完成变得漂亮很简单。有很多插件。
但是,在后端,在服务器端,最好的方法是什么?我不喜欢用户每次按下按键就访问数据库的想法。
我一直在考虑 sphinx,或者一些与您的网站并行运行的全文搜索引擎。
例如,如果我有一个 PHP(高流量)网站,我可以创建一个并行 python 脚本,从我的“自动完成文本框”获取 http 请求。然后,当用户在客户端按下某个键时,AJAX 请求将被定向到可以使用特殊策略的 python 脚本。
你的方法是什么?
一些约定:
- 尽量不要撞到数据库。我的意思是,得到
请求并执行某些操作 SELECT *
FROM foo WHERE bar LIKE "req%" 不是
一个很好的答案。这可能是一个很好的
策略,但我知道怎么做。*
- 复制数据可能是一个不错的选择。
我确实同意您需要一些更好的解决方案。阿帕奇solr http://lucene.apache.org/solr/有一个“建议”功能,您可以很好地使用。如果您的数据集很小,则将所有数据放入内存中,然后执行一个简单的循环。
在前端,我建议使用 setTimeout() 在触发 ajax 调用之前等待大约 200 毫秒。如果在这 200 毫秒内,触发了另一次击键,则取消上一次超时并开始另一次。这是一个非常干净的解决方案,每次击键都不会影响数据库。我过去用过它,效果非常好。
这很好地解释了 solr 与 jquery 以及如何创建自动完成功能。http://www.mattweber.org/2009/05/02/solr-autosuggest-with-termscomponent-and-jquery/ http://www.mattweber.org/2009/05/02/solr-autosuggest-with-termscomponent-and-jquery/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)