Php Mysql全文索引搜索错误
因此,我在表的一列中添加了全文索引,我的数据库引擎是MyIsam,我仍然会遇到这个严重错误: 致命错误:未捕获异常“mysqli\u sql\u exception”,消息为“找不到与列列表匹配的全文索引”。。。我的问题是: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(?) "); 如何解决这个问题?我应该查找什么?您应该查找全文索引的定义。它显然是为多个列定义的,而不仅
$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(?)
我只是不懂全文搜索。我用得越多,它看起来就越无用。它有很多限制。