rails - 搜索控制器

时间:2010-10-26 04:53:17

标签: ruby-on-rails ruby-on-rails-3 pg-search

我正准备在我的应用中构建搜索功能。我希望搜索能够跨越多个模型。

我正在考虑添加一个搜索控制器,然后根据设置决定要搜索哪些模型......

你怎么看?搜索控制器听起来是否正确,或者我应该考虑一些开源的东西吗?

由于

3 个答案:

答案 0 :(得分:4)

您可以在红宝石世界中进行搜索,例如

  1. Sphinx
  2. Ferret
  3. Solr
  4. 的Endeca
  5. 通过heroku的文档,heroku建议使用solr这是一个很棒的搜索引擎。 http://docs.heroku.com/websolrhttp://docs.heroku.com/full-text-search详细了解了相关信息。我们在其中一个项目中选择了solr进行搜索,我们使用了sunspot_rails,它可以很好地与您的模型集成,并在您的内容发生变化时重新编制索引。我们使用了来自http://github.com/outoftime/sunspot的gem sunspot_rails,这也是heroku推荐的。

    但请注意,heroku的文件系统是只读的,不允许你运行任意进程,所以你必须选择一个像websolr(从每月20美元起)或产生你自己的亚马逊ec2实例并进行索引那里。由于heroku也在亚马逊ec2上运行,因此延迟非常小。

    回到替代方案,众所周知,Ferret经常在生产中崩溃/损坏索引。 heroku不支持Sphinx。 Endeca非常昂贵,你只需花费大部分预算来获得基本结果。

答案 1 :(得分:3)

如果您使用的是Postgres,则可以使用pg_search gem

答案 2 :(得分:2)

我会说避免滚动你自己的搜索“引擎”,除非你有一个非常具体的需求,Sphinx(也读this)无法满足