Php Mysql全文索引搜索错误

Php Mysql全文索引搜索错误,php,mysql,database,mysqli,full-text-search,Php,Mysql,Database,Mysqli,Full Text Search,因此,我在表的一列中添加了全文索引,我的数据库引擎是MyIsam,我仍然会遇到这个严重错误: 致命错误:未捕获异常“mysqli\u sql\u exception”,消息为“找不到与列列表匹配的全文索引”。。。我的问题是: $stmt = $db->prepare("SELECT loc, lt, lg FROM locations WHERE MATCH(loc) AGAINST(?) "); 如何解决这个问题?我应该查找什么?您应该查找全文索引的定义。它显然是为多个列定义的,而不仅

因此,我在表的一列中添加了全文索引,我的数据库引擎是MyIsam,我仍然会遇到这个严重错误:

致命错误:未捕获异常“mysqli\u sql\u exception”,消息为“找不到与列列表匹配的全文索引”。。。我的问题是:

$stmt = $db->prepare("SELECT loc, lt, lg FROM locations WHERE MATCH(loc) AGAINST(?) ");

如何解决这个问题?我应该查找什么?

您应该查找全文索引的定义。它显然是为多个列定义的,而不仅仅是单个
loc

mysql> SHOW CREATE TABLE locations\G

CREATE TABLE `locations` (
  `loc` text,
  `name` text,
  `summary` text,
  FULLTEXT KEY `name` (`name`,`summary`,`loc`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1
MATCH()
函数中命名的列必须是全文索引的所有列,并且它们的顺序必须相同

例如:

-- WRONG; only using one of the three columns
SELECT loc, lt, lg FROM locations WHERE MATCH(loc) AGAINST(?)

-- WRONG; using all three columns, but in a different order than the index
SELECT loc, lt, lg FROM locations WHERE MATCH(loc, name, summary) AGAINST(?)

-- RIGHT:
SELECT loc, lt, lg FROM locations WHERE MATCH(name, summary, loc) AGAINST(?)

我只是不懂全文搜索。我用得越多,它看起来就越无用。它有很多限制。