Chr*_*nch 6 mysql full-text-search
如果我将 innodb_ft_min_token_size =1 从默认值 3 更改为 1,这会导致更多的磁盘使用吗?搜索有性能问题吗?
我希望能够在单词中的 1 个字符中使用全文搜索。
此外,一旦我进行了此更改,我将如何重建索引?这会给服务器带来很多负载吗?
没有那么多 1 和 2 个字母的单词,所以空间变化可能不是很大。
修改 innodb_ft_min_token_size、innodb_ft_max_token_size 或 ngram_token_size [in my.cnf] 需要重新启动服务器。
要为 InnoDB 表重建 FULLTEXT 索引,请使用带有 DROP INDEX 和 ADD INDEX 选项的 ALTER TABLE 删除并重新创建每个索引。
-- https://dev.mysql.com/doc/refman/8.0/en/fulltext-fine-tuning.html
的“范围”innodb_ft_min_token_size是“全局”。也就是说,它适用于所有 InnoDB FT 索引。
-- https://dev.mysql.com/doc/refman/5.7/en/innodb-parameters.html#sysvar_innodb_ft_min_token_size
重新创建索引将读取整个表并重建FT索引,这将在一段时间内将表“锁定”在某个级别。重建的时间将大致与表的大小成正比。它会消耗一堆额外的磁盘空间,直到它完成。(表和所有索引将被复制,至少 FT 索引将被重建。)
如果你有一千行,没什么大不了的。如果您有十亿行,您将需要很长时间的“停机时间”。
更改 innodb_ft_max_token_size 后,我会害怕做一个简短的通配符测试,如
AGAINST('a*' IN BOOLEAN MODE)
Run Code Online (Sandbox Code Playgroud)
如果您有测试服务器,请尝试一下。
我注意到文档建议中文等的值为 1。