对多列搜索“找不到与列列表匹配的全文索引”进行故障排除
构造 MATCH...AGAINST 查询时当全文索引中涉及多个列时,确保索引中的列顺序与它们在 MATCH 子句中出现的顺序相匹配至关重要。根据您遇到的错误消息,您的全文索引定义似乎包含比 MATCH 子句更多的列。
正如您所提到的,您的表包含在多个列上定义的全文索引:
FULLTEXT KEY `name` (`name`,`breadcrumb`,`description`,`brand`,`price`,`year`,`km`,`usage`,`type`)
但是,您的 MATCH 子句仅包含以下列:
MATCH(`brand`) AGAINST('Skoda');
索引中的列数与 MATCH 子句之间的不匹配导致了错误。要纠正此问题,您需要调整索引定义或 MATCH 子句以确保它们对齐。
建议的方法是修改全文索引以匹配您打算在搜索中使用的列。在这种情况下,您可以执行以下查询来添加仅包含品牌列的新全文索引:
ALTER TABLE products ADD FULLTEXT(brand);
添加正确的索引后,重新运行 MATCH 查询:
SELECT * FROM products WHERE MATCH(`brand`) AGAINST('Skoda');
现在应该返回预期结果,并且没有错误消息。
以上是为什么在搜索多列时出现'找不到与列列表匹配的全文索引”?的详细内容。更多信息请关注PHP中文网其他相关文章!