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

标签 mysql ruby-on-rails

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

相关文章:

php - PHP 中 undefined variable 和索引

mysql - Laravel 搜索结果分组

python - mysql 从 jython 插入变量

ruby-on-rails - 如何使用 Ruby 比较两个表

ruby-on-rails - DBI::InterfaceError:无法加载驱动程序(未初始化常量 MysqlError)

mysql - 为什么我不能在 mysql 触发器中使用这个 where 子句?

ruby-on-rails - Linux 上的 Rails 控制台总是在每行末尾显示\r

ruby-on-rails - rails : How to filter results?

ruby-on-rails - 使用 SQL 查询(mysql2 类型)获取数据时在 Ruby 中使用分页

java - 用java计算mysql中的日期