我正准备在我的应用程序中构建搜索功能。我希望搜索能够跨越多个模型。
我正在考虑添加一个搜索控制器,然后根据设置等决定要搜索的模型......
你怎么看?搜索控制器听起来是正确的还是我应该考虑一些开源的东西?
谢谢
我正准备在我的应用程序中构建搜索功能。我希望搜索能够跨越多个模型。
我正在考虑添加一个搜索控制器,然后根据设置等决定要搜索的模型......
你怎么看?搜索控制器听起来是正确的还是我应该考虑一些开源的东西?
谢谢
您有几个选项可以在红宝石世界中进行搜索,例如
浏览 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
我会说避免滚动你自己的搜索“引擎”,除非你有一个非常特殊的需求,像Sphinx这样的东西不能满足(也读这个)