【问题标题】:Implementing search in a Ruby on Rails 3 application?在 Ruby on Rails 3 应用程序中实现搜索?
【发布时间】:2011-01-11 11:31:09
【问题描述】:

我正在编写我的第一个 Ruby on Rails 应用程序,需要实现“搜索”功能。它将需要搜索数据库(3 个不同表中的每个表 1 列),并返回 3 个类别中每个类别中最相关的结果。有点像您如何在 Amazon.com 上进行搜索,该搜索将返回来自所有不同部门的结果。

我应该了解 Ruby on Rails 世界中的 gem/library/common 技术(适用于 Rails 3)吗?否则,我应该怎么做才能在我的应用程序中实现搜索功能?

【问题讨论】:

    标签: ruby-on-rails search


    【解决方案1】:

    我认为这取决于您对搜索的“认真程度”。

    如果您只想在一些简单的 VARCHAR 字段中进行搜索,您可以通过生成一些“LIKE '%xyz%'”语句手动完成,那么您只需要一个为您执行此操作的插件。我最喜欢的是searchlogic。它在您的模型中启用了许多方便的动态范围,您可以将它们链接在一起(就像其他范围一样)。例如你可以这样写:

    User.last_name_like("Doe").age_gt(30).age_lt(40)
    

    这里有一个great screencast,关于如何使用它的其他功能。

    但是 SQL LIKE 语句并不适合在大块文本中进行搜索。因此,如果这就是您所需要的,那么您最好使用一个实际索引您的数据的插件。

    在这种情况下,thinking sphinx(在其他答案中提到)是一个很好的解决方案。请记住,它需要一些特定于平台的安装步骤,并且仅适用于 PostreSQL 和 MySQL(它不适用于 Rails 的默认 SQLite)。使用它也不是那么简单 - 您需要定义要搜索的每个模型的索引内容、构建索引、启动 Sphinx 等。

    【讨论】:

      【解决方案2】:

      您可能需要使用一些搜索引擎。看看thinking sphinx 插件。我也使用了acts_as_ferret,但它可能会导致一些问题。

      我不知道是否有一个插件可以满足你的所有需求。我会这样做:

      1. 实现搜索(使用 sql 或 Sphinx 等搜索引擎)
      2. 然后添加一些用于自动完成的 ajax 内容。

      Google 是您的朋友:take a look herehere

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-03-24
        • 1970-01-01
        • 2018-09-04
        • 2012-06-08
        • 2010-11-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多