Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 什么';在Rails中编写搜索函数的惯用方法是什么?_Sql_Ruby On Rails_Search - Fatal编程技术网

Sql 什么';在Rails中编写搜索函数的惯用方法是什么?

Sql 什么';在Rails中编写搜索函数的惯用方法是什么?,sql,ruby-on-rails,search,Sql,Ruby On Rails,Search,我的Rails应用程序现在有一个搜索算法,但我真的不认为应该这样做。基本上,我做了以下性质的事情: def search users = User.all //Implement search algorithm on the users array end 我真的觉得我不应该这样做。我觉得我应该使用SQL或ActiveRecord方法来精确地获取所需的行,但是当搜索变得非常密集时,我觉得编写SQL命令非常困难。编写搜索算法以搜索数据库中的特定内容的惯用方法是什么?例如,名字。

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

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

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

当我需要真正的搜索时,我通常很灵活,比如你提到的“Irene”的词干:

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


很有趣。我肯定会研究它们,但我会更多地研究一个答案,比如elasticsearch将如何执行搜索?它会构造一个复杂的SQL查询,还是会将每一行收集到一个数组中,然后在数组上执行搜索算法?elasticsearch是一个以lucene为核心的搜索引擎,请查阅这些内容,以获得有关这些内容如何工作的详细信息。@David elastic search将以更适合搜索的结构对内容本身进行索引。它不会在数据库上执行SQL查询。另一方面,textacular使用postgres,并构造利用postgres全文索引的SQL,这就是我使用postgres的原因:)您可以使用很多优秀的工具。