【问题标题】:Search in Ruby On Rails在 Ruby On Rails 中搜索
【发布时间】:2010-11-05 05:22:54
【问题描述】:

我有一个托管在 Dreamhost 上的小型网站,每天约有 500 张照片和 150 位访问者。我想添加一个简单的搜索引擎,它不需要运行共享主机上不允许的长时间进程

搜索引擎应该处理属于各种模型的不同字段:Photo、Photo.author.name、Photo.cmets.content 等等

有什么插件可以帮忙吗?

【问题讨论】:

    标签: ruby-on-rails ruby search full-text-search


    【解决方案1】:

    MySQL 的全文搜索功能通常可用于任何共享主机环境,是添加此类功能的好方法。唯一的缺点是它仅适用于 MyISAM 表,这些表通常已被 InnoDB 弃用。

    我见过的方法是创建专门用于搜索目的的模型记录的衍生副本,其中一个很好的例子是维基百科数据库架构。这些需要与主记录保持同步,但这很容易通过 after_save 处理程序或简单的 SQL 更新语句完成。

    请注意,ActiveRecord 无法理解全文索引。需要一个相当丑陋的扩展才能使其合作,尽管我确实有一个示例捆绑在 MySQL hacks 集合中:

    http://github.com/theworkinggroup/rails_mysql_hacks/tree/master

    【讨论】:

      【解决方案2】:

      Rails 至少有 3 个全文搜索引擎:

      哪一个是最好的选择?这取决于。 Here 您可以阅读狮身人面像和雪貂之间的比较,包括来自 Engine Yard 的评论。

      【讨论】:

        【解决方案3】:

        我认为acts_as_indexed 插件是满足您需求的最佳选择。它不需要单独的服务器;它会在文件系统中自动创建索引。在与您类似的网站上,它非常快速且易于配置。

        【讨论】:

          【解决方案4】:

          acts_as_ferret 很可能会为您服务。

          但是我不知道 Ferret 在像你这样的设置上是否以及如何表现。

          【讨论】:

          • 我的印象是 Ferret 作为后台进程运行。
          • 有谁知道 Ferret 是否需要后台进程?
          • 您需要在生产环境中运行 DRb 服务器。雪貂是个大便,你应该寻找其他没有这么多问题的东西。
          【解决方案5】:

          雪貂或狮身人面像将需要专门的后台进程。您唯一的选择似乎是具有适当索引的 mysql 全文搜索。

          【讨论】:

            【解决方案6】:

            您可能想要研究 Sphinx/Thinking Sphinx 以进行快速全文搜索。

            Thinking Sphinx

            我不知道是否安装 Unix 软件包,整个过程对于您在 Dreamhost 上寻找的东西来说是多余的,但它是一个非常快速且强大的解决方案,将在未来很好地满足您的需求。

            【讨论】:

              猜你喜欢
              • 2012-07-21
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2014-10-20
              • 2011-05-29
              • 1970-01-01
              • 2019-03-18
              相关资源
              最近更新 更多