MySQL全文搜索InnoDB错误

时间:2017-03-01 06:43:13

标签: mysql full-text-search

我有以下查询来执行多列搜索:

SELECT 
    prod.pid, 
    prod.pname, 
    prod.description, 
    prod.status, 
    foto.set_cover, 
    foto.file
FROM products prod 
INNER JOIN second_child_categories secd ON prod.category_id = secd.second_id 
INNER JOIN photos foto ON prod.pid = foto.pid 
WHERE MATCH (prod.pname, prod.description)
AGAINST ('home')
AND foto.set_cover = '1' 
AND prod.status = '1' 
ORDER BY prod.created_date DESC

我使用InnoDB引擎和MySql Ver 14.14 Distrib 5.6.35

我在fulltext index

中添加了products
ALTER TABLE `products` ADD FULLTEXT (`pname`);
ALTER TABLE `products` ADD FULLTEXT (`description`);

我运行查询并收到错误:

#1191 - Can't find FULLTEXT index matching the column list

查询有什么问题?

提前致谢。

1 个答案:

答案 0 :(得分:1)

当您使用MATCH()时,您所指定的列必须一起编入索引为一个全文索引,而不是单独的全文索引中的每个列。

根据您显示的查询,您需要以这种方式定义索引:

ALTER TABLE `products` ADD FULLTEXT (`pname`,`description`);