gpt4 book ai didi

mysql - 返回mysql和rails 3中具有共同词的记录

转载 作者:行者123 更新时间:2023-11-29 09:11:01 25 4
gpt4 key购买 nike

请帮助解决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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com