【发布时间】:2010-12-18 01:52:19
【问题描述】:
我想弄清楚如何将搜索添加到我的 rails 应用程序。我是全新的所以慢慢来。我创建了一个博客并进行了很多定制,包括添加一些 AJAX,到目前为止我为自己感到非常自豪。我很难找到有关如何添加此功能的任何好的教程。基本上我只想启用完整搜索来搜索我的帖子表。最简单的方法是什么?
【问题讨论】:
标签: ruby-on-rails ruby search full-text-search
我想弄清楚如何将搜索添加到我的 rails 应用程序。我是全新的所以慢慢来。我创建了一个博客并进行了很多定制,包括添加一些 AJAX,到目前为止我为自己感到非常自豪。我很难找到有关如何添加此功能的任何好的教程。基本上我只想启用完整搜索来搜索我的帖子表。最简单的方法是什么?
【问题讨论】:
标签: ruby-on-rails ruby search full-text-search
Thinking Sphinx 上有一个很棒的 Railscast,这是我最喜欢的其他提到的选项。它快速、简单,而且是continually being developed。
还有SearchLogic,如果您真的不需要全文索引(您可能不需要博客),这非常棒。还有一个Railscast 来配合。
【讨论】:
最简单的方法是这样做:
results = Post.find(:all, :conditions => "post_body LIKE '%#{search_string}%'" )
但是,这非常有限,因为它只会搜索您正在寻找的确切单词或短语(更不用说 SQL 注入漏洞)。正如我所提到的,这是进行搜索的“最简单”的方式,但绝对不是最好的。如果你想认真做这件事,我会考虑使用acts_as_solr。
【讨论】:
根据您使用的 RDBMS,可能有一个用于全文搜索的内置解决方案。
否则,您可以查看使用 Apache Solr 进行全文搜索且易于使用的 Sunspot(和 Rails plugin)。尤其是编写查询/搜索比使用标准的acts_as_solr 插件有趣得多。
编辑哦,这是 视觉人士的screencast on Sunspot。
【讨论】:
我建议使用acts_as_solr 插件。我也刚开始使用 Rails,这是我的教授推荐的搜索索引插件。它在插件中包含 SOLR 搜索引擎。该网站包含安装和使用说明。
基本上,正如用法所示,您只需将acts_as_solr 标签包含在您希望可搜索的任何模型中,然后指定您希望为搜索建立索引的模型中的哪些属性......所以你会做类似:
class Post < ActiveRecord::Base
acts_as_solr :fields => [:post, :comments, :whatever]
对于搜索,你会做类似...
Post.find_by_solr(query_string)
【讨论】:
acts_as_solr 不再维护(作为它的事实上的维护者),我不推荐使用它。对于 Solr,Sunspot 是一个更好的选择。