不能对多列使用全文搜索
Can't use Fultext search with more than one column
Table 引擎 InnoDB
服务器版本:5.6.24 - MySQL 社区服务器 (GPL)
添加了全文索引
这个有效:
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 - Can't find FULLTEXT index matching the column list
我也试过用两列创建全文索引,但得到了同样的错误。也尝试过将引擎切换到 MyISAM 同样的错误,但在使用单列时也没有 return 任何匹配行
根据 this SO article,似乎 InnoDB 表不允许在同一 MATCH
条件下搜索多个 FULLTEXT
索引列。
但是,InnoDB 支持 MATCH
针对单个 FULLTEXT
索引列,因此您可以像这样修改查询:
SELECT *
FROM resources
WHERE MATCH(`short_description`) AGAINST ('Lorem')
OR MATCH(`long_description`) AGAINST ('Lorem')
Table 引擎 InnoDB
服务器版本:5.6.24 - MySQL 社区服务器 (GPL)
添加了全文索引
这个有效:
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 - Can't find FULLTEXT index matching the column list
我也试过用两列创建全文索引,但得到了同样的错误。也尝试过将引擎切换到 MyISAM 同样的错误,但在使用单列时也没有 return 任何匹配行
根据 this SO article,似乎 InnoDB 表不允许在同一 MATCH
条件下搜索多个 FULLTEXT
索引列。
但是,InnoDB 支持 MATCH
针对单个 FULLTEXT
索引列,因此您可以像这样修改查询:
SELECT *
FROM resources
WHERE MATCH(`short_description`) AGAINST ('Lorem')
OR MATCH(`long_description`) AGAINST ('Lorem')