无法更改InnoDB全文的最小单词长度

问题描述

我有一个MySQL 5.7.31 InnoDB表,该表启用了全文索引...

如果我搜索更长的单词,我会得到结果:

SELECT * FROM my_table WHERE match(my_title) against('landscape in' IN BOOLEAN MODE)

如果我在全文中搜索短词(例如in),则没有结果

SELECT * FROM my_table WHERE match(my_title) against('in' IN BOOLEAN MODE)

数据在那里,我可以通过like %%查询来找到它:

SELECT * FROM my_table WHERE my_title LIKE '%in%' 

我在/etc/my.cnf中设置了这两个,我知道一个用于InnoDB,一个用于MyIsam,我重新启动了MySQL,但仍然无法运行上述简短的全文查询。

ft_min_word_len=1
innodb_ft_min_token_size=1

编辑: 如果我有一个类似landscape in Paris的值,那么我会得到against('+landscape +Paris' IN BOOLEAN MODE)的数据,而不是against('+landscape +in +Paris' IN BOOLEAN MODE)

的数据

in可能是保留字吗?

解决方法

“中”可能在“停止列表”中。更改非索引字表文件的规范。

更改最小长度或非索引字表后,必须重建全文索引。 (不需要重新启动MySQL。)

我在一种情况下使用的替代方法:我在长词中添加了+。例如,against('+landscape in +Paris' IN BOOLEAN MODE)可能会实现您的目标而无需更改min-len或停用词列表。

(是的,MyISAM和InnoDB之间存在多个“差异”。我在文档中没有找到明确的列表。这是我尝试的这样的列表:http://mysql.rjweb.org/doc.php/myisam2innodb#fulltext

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...