2

我尝试运行以下查询

SELECT * FROM complains WHERE match(title, description) against('+lorem' IN BOOLEAN MODE)

表抱怨有两个 FULLTEXT 索引。标题和描述,但我仍然从 MySQL 收到此错误

Error Code: 1191. Can't find FULLTEXT index matching the column list

但是我可以自己运行每一行的查询

SELECT * FROM complains WHERE match(description) against('+lorem' IN BOOLEAN MODE)
SELECT * FROM complains WHERE match(title) against('+lorem' IN BOOLEAN MODE)

这工作正常。我错过了什么?

在此处输入图像描述

4

1 回答 1

1

如果您在运算符中列出多个字段match()并使用布尔模式和 innodb 表引擎,那么您需要有一个覆盖这些字段的多列全文索引,正如关于布尔全文搜索的 MySQL 文档所说:

InnoDB 表需要 MATCH() 表达式的所有列上的 FULLTEXT 索引来执行布尔查询。即使没有 FULLTEXT 索引,针对 MyISAM 搜索索引的布尔查询也可以工作,尽管以这种方式执行的搜索会很慢。

于 2016-11-11T17:40:41.180 回答