如何对firstname,lastname进行sql搜索查询

Joh*_*ith 4 sql ruby-on-rails ruby-on-rails-3

如果我有一个模型:

User :firstname   :lastname
     joseph       smith
     anna         bauer
     ...          ...
Run Code Online (Sandbox Code Playgroud)

还有一个输入字段,您可以在其中搜索用户.不同的搜索查询可能是:

  searchquery1:  smith joseph
  searchquery2:  joseph smith
  searchquery3:  joseph
  searchquery4:  smith
Run Code Online (Sandbox Code Playgroud)

在sql中搜索查询会是最好的吗?其实我可以想象这个搜索查询:

  where 'firstname OR lastname  LIKE ?', "%#{search}"
Run Code Online (Sandbox Code Playgroud)

第一次尝试:

def self.search(search)
 if search
   select('CONCAT(vorname, " ", nachname) as full_name, *')
   where ['vorname LIKE :s OR nachname  LIKE :s OR full_name LIKE :s', :s => "%#{search}"]
 else
  scoped
 end
end
Run Code Online (Sandbox Code Playgroud)

错误: SQLite3::SQLException: no such column: full_name

第二次尝试:

def self.search(search)
 if search
  a = search.split
   where('firstname OR lastname  LIKE ?', a[1])
   where('firstname OR lastname  LIKE ?', a[2]) unless a[2].nil?
  else
  scoped
 end
end
Run Code Online (Sandbox Code Playgroud)

问题:什么都没找到!

tec*_*eet 5

是的,你必须像这样在名字和姓氏上搜索它

select('(firstname || " " || lastname) as \'full_name\', *')
where ['firstname LIKE :s OR lastname  LIKE :s OR full_name LIKE :s', :s => "%#{search}"]
Run Code Online (Sandbox Code Playgroud)

但如果数据太大 您可以使用像Solr或thinkin sphinx这样的全文搜索引擎