4

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

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

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

谢谢

4

3 回答 3

4

您有几个选项可以在红宝石世界中进行搜索,例如

  1. 狮身人面像
  2. 雪貂
  3. 索尔
  4. 恩德卡

浏览 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 太贵了,你必须花费大部分预算才能获得基本结果。

于 2010-10-26T08:59:00.523 回答
3

如果你使用 Postgres,你可以使用pg_search gem

于 2011-11-25T23:39:52.850 回答
2

我会说避免滚动你自己的搜索“引擎”,除非你有一个非常特殊的需求,像Sphinx这样的东西不能满足(也读这个

于 2010-10-26T05:02:32.750 回答