我正在使用 Rails 3.2.2 和 MySQL。我正在按用户名(例如,John
、Anthony
、Mark
)这样搜索数据库表列:
# User controller
User.search_by_name(params[:search]).order(:name)
# User model
def self.search_by_name(search)
if search
where('users.name LIKE ?', "%#{search}%")
else
scoped
end
end
但是,由于名称可以由两个或多个字符串组成(例如,John Henry
或 Henry John
,Anthony Maria
或Maria Anthony
, Mark Alfred
或 Alfred Mark
), 我也想在 params[: search]
提供了多个名称。我试着用
def self.search_by_name(search)
if search
search.split(' ').each do |string|
where('users.name LIKE ?', "%#{string}%")
end
else
scoped
end
end
但我收到以下错误(例如,假设我正在搜索 John Henry
):
NoMethodError (undefined method `order' for ["John", "Henry"]:Array).
如何正确搜索多个名称?
最佳答案
我完全认为您应该执行以下操作之一,
Mysql全文搜索:
http://devzone.zend.com/26/using-mysql-full-text-searching/
狮身人面像搜索:
http://www.ibm.com/developerworks/library/os-php-sphinxsearch/
- 我推荐 sphinxsearch,因为我将它与各种很酷的功能一起使用 用它内置。
- 对 sphinx 的支持也很棒!
关于mysql - 如何在数据库表列中搜索多个字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10680108/