使用Rails和MySQL。不确定是否有人问过,但无法找到它。
我有以下记录:
1. I love Rails
2. I love Django
3. I code using Ruby on Rails
====
(1)搜索:"我爱"
结果:" 我喜欢 Rails"," 我喜欢 Django"
====
(2)搜索:"爱"
结果:"我爱 Rails","我爱 Django"
====
(3)搜索:" ails"
结果:"我喜欢Rails","我使用Ruby on Rails进行编码"
====
(4)搜索:"代码Ruby"
结果:"我使用Ruby on Rails进行编码"
====
我的代码是:
term = "%#{params[:term]}%"
shops = Shop.where("name LIKE ?", term)
它仅适用于搜索(1)和(2)。在进行搜索(3)和(4)时,我如何编码以获得结果?
非常感谢。
答案 0 :(得分:2)
我认为你需要使用通配符(在原始SQL中)
LIKE '%ails'
或更一般地说:
LIKE '%substring%'
答案 1 :(得分:0)
找到了解决方案。
我需要使用%string%
将搜索词组中的每个单词换行。
====
搜索(1):“我爱”
查询:SELECT * from t WHERE name LIKE "%i% %love%";
结果:“我爱Rails”,“我爱Django”
====
搜索(2):“爱”
查询:SELECT * from t WHERE name LIKE "%love%";
结果:“我爱Rails”,“我爱Django”
====
搜索(3):“ails”
查询:SELECT * from t WHERE name LIKE "%ails%";
结果:“我喜欢Rails”,“我使用Ruby on Rails进行编码”
====
搜索(4):“代码Ruby”
查询:SELECT * from t WHERE name LIKE "%code% %Ruby%";
结果:“我使用Ruby on Rails进行编码”
====
我的Ruby代码应该是:
term = "#{params[:term]}"
f_term = term.gsub /\b/, '%'
shops = Shop.where("name LIKE ?", f_term)
进行测试