【问题标题】:What's the idiomatic way of writing a search function in Rails?在 Rails 中编写搜索功能的惯用方式是什么?
【发布时间】:2014-01-02 12:54:07
【问题描述】:

我的 Rails 应用程序现在有一个搜索算法,但我真的不认为应该这样做。本质上,我做了以下性质的事情:

def search
    users = User.all
    //Implement search algorithm on the users array
end

我真的觉得这不应该是我应该做的。我觉得我应该使用SQL 或ActiveRecord 方法来准确获取我需要的行,但是当搜索变得非常密集时,我觉得这将是一个非常难以编写的SQL 命令。编写用于在数据库中搜索特定事物的搜索算法的惯用方式是什么?例如,姓名。如果我想搜索姓名并输入ire 怎么办。我希望Irene 出现在desiree 之前,但两者都有那个子字符串。只是一个例子。

【问题讨论】:

    标签: sql ruby-on-rails search


    【解决方案1】:

    当我需要真正的搜索时,我通常是弹性的,比如你提到的 'Irene' 的词干:

    https://github.com/elasticsearch/elasticsearch-ruby

    对于较小的需求,您可以使用 postgres 中的全文搜索功能,与我使用过的 gem 类似:

    https://github.com/textacular/textacular

    【讨论】:

    • 有趣。我肯定会调查它们,但我正在寻找更多答案,例如弹性搜索将如何执行搜索?它会构造一个复杂的 SQL 查询,还是会例如将每一行收集到一个数组中,然后对数组执行搜索算法?
    • elasticsearch 是一个以 lucene 为核心的搜索引擎,请查看这些以了解其工作原理的详细信息。
    • @David 弹性搜索将以更适合搜索的结构索引内容本身。它不会对数据库执行 SQL 查询。
    • textacular 另一方面使用postgres,并构造利用postgres全文索引的sql
    • 这就是我使用 postgres 的原因 :) 这么多优秀的工具触手可及。
    猜你喜欢
    • 1970-01-01
    • 2010-10-27
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 2015-04-16
    • 1970-01-01
    • 2011-03-07
    • 1970-01-01
    相关资源
    最近更新 更多