我正准备在我的应用中构建搜索功能。我希望搜索能够跨越多个模型。
我正在考虑添加一个搜索控制器,然后根据设置决定要搜索哪些模型......
你怎么看?搜索控制器听起来是否正确,或者我应该考虑一些开源的东西吗?由于
答案 0 :(得分:4)
您可以在红宝石世界中进行搜索,例如
通过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非常昂贵,你只需花费大部分预算来获得基本结果。
答案 1 :(得分:3)
如果您使用的是Postgres,则可以使用pg_search gem
答案 2 :(得分:2)