PHP环境下MySQL MATCH AGAINST部分停用词无规律失效问题咨询
问题根因排查&解决步骤
1. 核心配置错配
你修改的ft_stopword_file是MyISAM存储引擎专属的全文停用词配置参数,MySQL 5.7默认表引擎为InnoDB,该参数对InnoDB完全不生效,这是你配置后无效的核心原因。
同时你观察到的部分停用词可搜索、部分不可搜索的现象,刚好对应MyISAM和InnoDB两套内置停用词表的差异:what不在InnoDB默认停用词表内,而why/for/and/or在两套停用词表中都存在,才会出现你说的无规律表现。
2. 正确配置步骤
如果你的表使用的是InnoDB引擎(可执行SHOW CREATE TABLE table_name;确认ENGINE字段),按以下步骤操作:
- 打开WAMP的MySQL配置文件
my.ini,新增以下配置:
innodb_ft_enable_stopword = OFF
- 保存配置后重启WAMP的MySQL服务
- 删除原有的field_01到field_09的全文索引,重新创建全文索引:原有索引生成时已经过滤掉了停用词,仅重启服务不会更新旧索引,必须重建索引才能让停用词入库可检索。
3. 可选配置:自定义停用词表
如果不需要完全关闭停用词过滤,也可以自定义InnoDB停用词表,仅移除你需要支持检索的词汇即可,不需要全部放行所有词。
内容的提问来源于stack exchange,提问作者Bepe
相关产品推荐
相关产品推荐

