查询结果接近谷歌搜索铁路

时间:2015-04-16 09:02:36

标签: ruby-on-rails activerecord where

如何在活动记录栏中获取谷歌搜索等结果查询?

example 1 :

User.all

result :
[{name: "john now", age: "14"}, {name: "desy awesome", age: "19"}]

example 2 :
User.where("name LIKE ?", "%jo%")

result :
[{name: "john now", age: "14"}]

我的问题是,当我搜索姓名" johnnow"我想得到像波纹管一样的结果。示例:

User.where("name LIKE ?", "%johnnow%")

    result :
    [{name: "john now", age: "14"}]

怎么做?

1 个答案:

答案 0 :(得分:1)

这种事情实际上是针对搜索引擎而不是SQL。还有许多其他方法可能需要以模糊的方式匹配事物,例如区分大小写,拼写错误等。试图用复杂的SQL来覆盖它会让你慢慢发疯。

我为此使用Searchkick,但还有许多其他选择。您需要一个搜索索引器,例如Elasticsearch或Solr,然后是某种宝石,将它绑定到你的AcitveRecord类中。

将Searchkick用于User模型:

class User < ActiveRecord::Base
  searchkick
end

然后在终端:

User.reindex

然后搜索:

users = User.search 'johnnow'