首页 > 数据库 > mysql教程 > 为什么在搜索多列时出现'找不到与列列表匹配的全文索引”?

为什么在搜索多列时出现'找不到与列列表匹配的全文索引”?

Linda Hamilton
发布: 2024-10-26 14:17:02
原创
879 人浏览过

 Why am I getting

对多列搜索“找不到与列列表匹配的全文索引”进行故障排除

构造 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板