我有这个表有歌曲标题,艺术家等。
| 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)
我搜索时效果很好:miley
但search_tags = 23
注意:我在Windows 10上使用带有InnoDB的MySQL 5.6和ft_min_word_len=1
答案 0 :(得分:3)
搜索" 23"将无法工作,因为密钥的长度很小。 默认情况下,MySQL在全文索引中存储密钥,最少4个字符。您需要将其更改为1或2才能使查询正常工作。
您需要做的是
将此行添加到my.ini文件
innodb_ft_min_token_size = 1
重启MySQL服务
服务器恢复后,通过发出伪造的ALTER命令重建表。
ALTER TABLE table_name ENGINE = INNODB;
再次运行查询,它应该有效:)
祝你好运
答案 1 :(得分:0)
请注意,默认情况下ft_min_word_len为4。令牌500的长度为3。因此它根本不会被索引。您将必须做三(3)件事:
STEP 01:打开mysql文件夹中的init文件 将此添加到\ bin \ mysql \ mysql5.7.24
innodb_ft_min_token_size = 1
STEP 02:重新启动mysql
STEP 03:重新索引模型表中的所有索引 您可以删除并添加FULLTEXT索引