mysql - 如何使用 FULLINDEX 对 MySQL 中的两个或更多列进行 MATCH AGAINST?

标签 mysql sql indexing

我有以下查询:

SELECT *
FROM pin
WHERE MATCH (title) AGAINST ('+red +yellow +blue' IN BOOLEAN MODE)
OR MATCH (front) AGAINST ('+red +yellow +blue' IN BOOLEAN MODE)

如果我是正确的,这将给我返回标题或前面包含所有单词的结果。

有没有一种方法可以设计查询,以便我也能获得标题中可以包含“红色”、描述中可以包含“黄色”和“蓝色”或任何其他组合的结果?我想要任何列的任意组合中的所有三个单词的结果(但它必须包含所有三个单词,不少于)。

最佳答案

在两列上构建复合全文索引:

ALTER TABLE pin ADD FULLTEXT(title, front);

SELECT *
FROM   pin
WHERE  MATCH(title, front) AGAINST ('+red +yellow +blue' IN BOOLEAN MODE);

关于mysql - 如何使用 FULLINDEX 对 MySQL 中的两个或更多列进行 MATCH AGAINST?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20384955/

相关文章:

sql - Ruby ActiveRecord 和 sql 元组支持

SQL Split Island On Criteria

python - 重置索引后出现关键错误

python - 使用 numpy 数组索引表达列表理解

mysql - 检索员工和经理列表

mysql - 如何正确使用 SQLite 进行 CREATE INDEX

php - Phalcon MySQL 按位查询(左移运算符)

sql - 试图了解sql查询中的 "except all"

Python:根据计数条件删除行

java - 如何使用Spring Boot查询并持久化MySQL数据库中的静态对象?