Navicat 16 必须通过「索引」选项卡创建全文索引,右键字段的“设置索引”已移除Fulltext选项;需选FULLTEXT类型、多选CHAR/VARCHAR/TEXT字段、保存后用SHOW INDEX验证,且搜索须配合MATCH() AGAINST()语法。
navicat 16 图形界面创建全文索引,必须用「索引」选项卡,不能靠右键字段选“设置索引”——后者在新版里已失效或只支持普通索引。
为什么右键字段“设置索引”不出现 Fulltext 选项
Navicat 16 对 MyISAM 和 InnoDB 表的全文索引支持统一收口到「索引」选项卡。右键单列弹出的菜单(如“设置索引”或“属性”)中,“Full-text Index”复选框已被移除,强行勾选也不会生效。这是 UI 改动,不是 bug。
- 旧版 Navicat(如 12 或更早)可能保留该入口,但 Navicat 16 已明确弃用
- 即使表引擎是 InnoDB,也必须确保 MySQL 版本 ≥ 5.6.4(InnoDB 全文索引起始支持版本)
- 字段类型必须是
CHAR、VARCHAR或TEXT;INT或DATETIME字段点不了 Fulltext
在「索引」选项卡中正确添加 FULLTEXT 索引
打开目标表 → 点击顶部「索引」标签页 → 点「添加」→ 在弹出对话框中填关键项:
-
索引名称:可自定义,比如ft_title_content,避免纯数字或空格 -
索引类型:下拉必须选FULLTEXT(不是 B-Tree、不是 Unique) -
索引字段:点击右侧「…」按钮,**多选**要参与全文检索的列(如title和content),单选也行,但联合全文索引效果更好 - 不要勾选「唯一」或「聚簇」——FULLTEXT 索引不支持这些属性
- 确认后点「确定」,再点表设计页右上角「保存」才真正写入表结构
创建后立刻验证是否成功
仅靠 Navicat 界面显示“索引已添加”不保险。执行一条原生 SQL 验证:
SHOW INDEX FROM `your_table_name` WHERE Key_name LIKE 'ft%';
若返回结果中 Index_type 列值为 FULLTEXT,且 Column_name 匹配你选的字段,则创建成功。常见失败现象:
- 执行
SHOW INDEX查不到记录 → 没点「保存」,或保存时 Navicat 报了错但被忽略 - 查到了但
Index_type是BTREE→ 类型选错了,重新编辑索引改类型 - MySQL 报错
ERROR 1214 (HY000): The used table type doesn't support FULLTEXT indexes→ 表引擎不是 InnoDB/MyISAM,用ALTER TABLE your_table ENGINE=InnoDB;先切换
全文搜索语句必须配合 MATCH() AGAINST() 使用
建好索引只是第一步。Navicat 查询编辑器里直接写:
SELECT * FROM `articles` WHERE MATCH(`title`, `content`) AGAINST('数据库优化' IN NATURAL LANGUAGE MODE);注意三点:
-
MATCH()里的字段顺序必须和索引定义时完全一致(title,content≠content,title) - 不加
IN NATURAL LANGUAGE MODE或IN BOOLEAN MODE会报语法错误 - 如果搜索词太短(默认
ft_min_word_len=4),比如搜 “DB”,得先改 MySQL 配置并重启,Navicat 本身不提供该参数调整入口
真正容易被忽略的是:全文索引对停用词(如 “the”、“and”、“的”)默认过滤,且中文需依赖 ngram 插件或第三方分词——Navicat 图形界面完全不暴露这些底层配置,全得靠 DBA 手动干预 MySQL 服务端。


















