小编Ego*_*gor的帖子

对短于 3 个字符的字符串的 MySQL 全文搜索不返回任何行

我有一个包含一些地址的 MySQL 表。假设我有以下两行:

"10 Fake Street"
"101 Fake Street"
Run Code Online (Sandbox Code Playgroud)

我正在尝试将全文搜索与 MATCH() AGAINST() 一起使用。我已将 ft_min_word_len 设置为 1,重新启动服务器并删除,然后通过运行重建索引

ALTER TABLE addresses DROP INDEX address_index
CREATE FULLTEXT INDEX address_index ON addresses(street)
Run Code Online (Sandbox Code Playgroud)

我已经通过运行验证我的 ft_min_word_len 确实设置为 1

show global variables like 'ft_min_word_len'
Run Code Online (Sandbox Code Playgroud)

如果我在搜索中包含任何少于 3 个字符的单词,则不会返回任何结果,除非我在其中添加了一个野星。例如

SELECT * FROM addresses WHERE MATCH(street) AGAINST('+101' IN BOOLEAN MODE)
Run Code Online (Sandbox Code Playgroud)

或者

SELECT * FROM addresses WHERE MATCH(street) AGAINST('+10*' IN BOOLEAN MODE)
Run Code Online (Sandbox Code Playgroud)

两者都返回 1 行“101 Fake Street”。跑步

SELECT * FROM addresses WHERE MATCH(street) AGAINST('+10' IN BOOLEAN MODE)
Run Code Online (Sandbox Code Playgroud)

返回 0 行。为什么?我可以在网上找到的唯一建议都是关于设置最小长度的,但我已经确认我的设置为 1 …

mysql innodb index full-text-search

5
推荐指数
1
解决办法
8090
查看次数

标签 统计

full-text-search ×1

index ×1

innodb ×1

mysql ×1