请帮助解决rails 3中的这个mysql查询:
在我的 Controller 中,我有:
@projects = Project.where("name LIKE ?", "%#{params[:search]}%")
如果在我的项目表中的“名称”列下,我有以下记录:
1)。水
2)。水道水桥
3)。桥梁水道
如果 params[:search] = "water",则返回记录 1、2、3。但当 params[:search] = "aquaduct waterbridge"时,则仅返回记录 2。
我需要的是搜索每个单词(如果 params[:search] 字符串中有很多单词)并返回找到的记录。例如,如果 params[:search] = "aquaduct waterbridge",则它必须返回所有记录,因为水在所有 3 条记录中都很常见。
我只是以水为例。必须适用于记录之间常见的任何单词。
感谢您的帮助,非常感谢。
最佳答案
一种简单的方法可以分割 params[:search] 并进行如下查询:
WHERE name LIKE "%aquaduct%" OR name LIKE "%water%" OR name LIKE "%bridge%"
但这是低效的方法。
尝试使用mysql的MATCH() AND AGAINST()方法进行全文检索。请查看链接。
http://dev.mysql.com/doc/refman/5.5/en/fulltext-boolean.html
更新:
ALTER TABLE 项目添加全文(名称);
关于mysql - 返回mysql和rails 3中具有共同词的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5550118/