Rails3 中的 Google Instant 式搜索
在我的 Rails 应用程序中,我想要通过数据库中的 Customer
表进行增量搜索(如自动完成),查找名称,并在您键入时显示结果,< href="http://www.google.com/instant/" rel="nofollow">Google 即搜即得风格。
我对宝石或可能在这种情况下有所帮助的示例的简短研究没有提供任何有用的结果。
有Rails 方式来实现这个吗?
我能想到的唯一问题是大约有。数据库中的 500k 记录(即使名称相关列已建立索引)可能会降低响应速度。
作为解决方案,ajax 请求可能仅在输入前 4-5 个字符后才会触发。
还有其他建议、线索、问题、想法、评论吗?
In my Rails app, I want to an incremental search (like autocomplete) through the Customer
table in the DB, looking for names, and showing the results as you type, Google Instant-style.
My brief research for gems or examples that might help in this scenario didn't provide any useful results.
Is there a Rails way to implement this?
The only issue I can think of is that that having approx. 500k records in the DB (even if the name related columns are indexed) might slow down the responsiveness.
As a solution for that, the ajax request might be triggered only after typing in the first 4-5 characters.
Any other suggestions, leads, issues, ideas, comments?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
使用这个:Tokeninput
,这里是它的 Railscast:TokenInputrailscast
Use this: Tokeninput
and here is Railscast for it: TokenInput railscast
虽然我对 ruby 一点也不熟悉,但我经常使用 jQuery UI 自动完成。您可以仅在输入一定数量的字符后触发它运行(请参阅“选项”中的 minLength )。
您还可以将其他参数传递给服务器端脚本。我传递了一个名为 Limit 的值,并将其设置为一个合理的值(大多数情况下为 10),我在 SQL 查询中使用它(其中 rownum <10),这样就不会破坏数据库。
While I'm not at all familiar with ruby, I use jQuery UI autocomplete often. You can trigger it to run only after a certain number of characters are typed (See minLength in 'options').
Also you can pass additional parameters to your server side scripting. I pass one called Limit and set it to a sensible value (10 in most cases), I use this in the SQL query (where rownum <10), that way you don't hammer the database.