如何解决无法更改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)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。