【发布时间】:2011-04-30 13:34:12
【问题描述】:
我正准备在我的应用中构建搜索功能。我希望搜索能够跨越多个模型。
我正在考虑添加一个搜索控制器,然后它会根据设置等决定要搜索的模型...
你怎么看?搜索控制器听起来是否正确,或者有什么我应该考虑的开源?
谢谢
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 pg-search
我正准备在我的应用中构建搜索功能。我希望搜索能够跨越多个模型。
我正在考虑添加一个搜索控制器,然后它会根据设置等决定要搜索的模型...
你怎么看?搜索控制器听起来是否正确,或者有什么我应该考虑的开源?
谢谢
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 pg-search
【讨论】:
您有几个选项可以在 ruby 世界中进行搜索,例如
浏览 heroku 的文档后,heroku 建议使用 solr,这是一个很棒的搜索引擎。 http://docs.heroku.com/websolr 和 http://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 太贵了,你必须花费大部分预算才能获得基本效果。
【讨论】:
如果你使用 Postgres,你可以使用pg_search gem
【讨论】: