Mysql FULL TEXT索引搜索错误

时间:2014-01-01 23:33:55

标签: php mysql database mysqli full-text-search

所以我在我的一个表的列中添加了全文索引,我的数据库引擎是MyIsam,我仍然得到这个令人讨厌的错误:

致命错误:未捕获的异常'mysqli_sql_exception',消息'无法找到与列列表匹配的FULLTEXT索引'...我的查询:

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

如何解决这个问题以及我应该寻找什么?

1 个答案:

答案 0 :(得分:0)

您应该查找FULLTEXT索引的定义。显然,它的定义不仅仅是列,而是单个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()函数中命名的列必须 all 全文索引的列,并且它们的顺序必须相同。

示例:

-- 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(?)