MySQL MATCH AGAINST 找不到 2 个字母的条目

MySQL MATCH AGAINST fails to find 2-letter entries

提问人:Floobinator 提问时间:7/29/2022 更新时间:7/29/2022 访问量:52

问:

MySQL的 8.0.29.

因此,我将以下内容放入我的配置中:

[mysqld]
innodb_ft_min_token_size=2
ft_min_word_len=2

已重新启动我的服务器。

Rebuilt the Table Indexes with:
ALTER TABLE t1 ENGINE = InnoDB;

而 MATCH AGAINST 仍然拒绝返回带有 2 个字母名称的记录,例如“Ed Snow”。

如果我在布尔模式下进行 MATCH AGAINST('ed') 或 AGAINST (+ed) 或 (+ed snow),即使我们的数据库中有数百个名为“ed”的人......什么也没出现。

我匹配的列是一个全文name_full列,如“ed snow”、“ed smith”、“ed lindsky”等。

有什么想法吗?

MySQL 索引匹配 全文搜索

评论

1赞 Akina 7/29/2022
FTS 设置的任何更改都需要重建 FT 索引。
0赞 Floobinator 7/29/2022
@Akina好的,但我认为 ALTER TABLE(如上所示)会这样做。如何使用最新版本的 MySQL 为特定表重建 InnoDB 索引?上述技术不正确吗?
0赞 Akina 7/29/2022
只有一种方法可以重建索引 - 删除并重新创建它。
0赞 Akina 7/29/2022
我以为 ALTER TABLE(如上所示)会这样做。 dev.mysql.com/doc/refman/8.0/en/......“然后重新启动服务器并重建您的 FULLTEXT 索引。”
0赞 Floobinator 7/29/2022
我的想法是,重建 FULLTEXT 索引的唯一方法是删除它并重新创建它;DBA 到底如何为大型数据库重建数百个表的 FT 索引?除了删除和重新创建每个单独的索引之外,还必须有另一种方法......

答: 暂无答案