全文搜索不适用于数字

Full Text Search not working with numbers

提问人:M1X 提问时间:10/30/2014 更新时间:7/29/2020 访问量:3727

问:

我有这张表,上面有歌曲名称、艺术家等。

| id | artist | title | search_tags |

| 1 | miley cyrus | 23 | miley cyrus 23 |

这是我的查询:

select * from music where match(search_tags) against ('+$search_value*' IN BOOLEAN MODE)

当我搜索时它工作正常:但是当它没有显示任何结果时mileysearch_tags = 23

注意:我在 Windows 10 上使用 MySQL 5.6 和 InnoDB,并且ft_min_word_len=1

mysql 全文搜索

评论


答:

7赞 Jaylen 10/30/2014 #1

搜索“23”时将不起作用,因为键的长度很小。 默认情况下,MySQL 将键存储在全文索引中,最少为 4 个字符。您需要将其更改为 1 或 2 才能使查询正常工作。

您需要在这里做的是

  1. 将此行添加到 my.ini 文件

    innodb_ft_min_token_size = 1

  2. 重启MySQL服务

  3. 服务器重新启动后,通过发出假的 ALTER 命令来重建表。

    更改表 table_name ENGINE=INNODB;

再次运行查询,它应该可以:)

祝你好运

评论

1赞 M1X 10/30/2014
ft_min_word_len为 1;这也是一个问题。@Mike
1赞 Jaylen 10/30/2014
哦,对不起,我错过了。尝试重新建立索引。我不确定您在创建索引后是否更改了ft_min_word_len。
1赞 M1X 10/30/2014
创建索引后更改了ft_min_word_len,innodb_ft_min_token_size返回 3 @Mike
0赞 M1X 6/17/2016
嘿,非常感谢,尤其是这个ALTER TABLE table_name ENGINE=INNODB;
0赞 barna 7/29/2020 #2

请注意,默认情况下ft_min_word_len为 4。令牌 500 的长度为 3。因此,它根本不会被索引。您必须做三 (3) 件事:

步骤01:打开mysql文件夹中的init文件 将此添加到\bin\mysql\mysql5.7.24

innodb_ft_min_token_size = 1

STEP 02 : 重启mysql

步骤03:重新索引模型表中的所有索引 您可以删除并添加 FULLTEXT 索引