我有以下查询来执行多列搜索:
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
查询有什么问题?
提前致谢。
答案 0 :(得分:1)
当您使用MATCH()
时,您所指定的列必须一起编入索引为一个全文索引,而不是单独的全文索引中的每个列。
根据您显示的查询,您需要以这种方式定义索引:
ALTER TABLE `products` ADD FULLTEXT (`pname`,`description`);