不能使用具有多个列的Fultext搜索

时间:2015-08-20 14:56:31

标签: mysql sql phpmyadmin

Table Engine InnoDB

服务器版本:5.6.24 - MySQL社区服务器(GPL)

添加了全文索引 enter image description here

这有效:

SELECT * FROM resources WHERE MATCH(`short_description`) AGAINST ('Lorem')

这有效:

SELECT * FROM resources WHERE MATCH(`long_description`) AGAINST ('Lorem')

这不起作用:

SELECT * FROM resources WHERE MATCH(`short_description`,`long_description`) AGAINST ('Lorem')
  

1191 - 找不到与列列表匹配的FULLTEXT索引

我也尝试使用两列创建全文索引但得到相同的错误。还试过将引擎切换到MyISAM同样的错误,但是当使用单列时也没有返回任何匹配行

1 个答案:

答案 0 :(得分:1)

基于this SO article,似乎InnoDB表不允许在同一FULLTEXT条件下搜索多个MATCH索引列。

但是,InnoDB 支持MATCH针对单个FULLTEXT索引列,因此您可以像这样重写您的查询:

SELECT *
FROM resources
WHERE MATCH(`short_description`) AGAINST ('Lorem')
    OR MATCH(`long_description`) AGAINST ('Lorem')