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)
问题:什么都没找到!
是的,你必须像这样在名字和姓氏上搜索它
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这样的全文搜索引擎
| 归档时间: |
|
| 查看次数: |
3175 次 |
| 最近记录: |