无法更改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

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...