ft_min_word_len=1
还有ft_max_word_len参数 我用的是默认的
ALTER TABLE `db`.`table`
ADD FULLTEXT INDEX `ft_field` (`field` ASC);
SELECT * FROM table WHERE MATCH(field) AGAINST('aaa')
aaa | AAA | Aaa . | Aaaaaaaaan. |
---|---|---|---|
匹配到 | 匹配到 | 匹配到 | 匹配不到 |
个人觉得 因为 这里的 查询是作为精确匹配的
- 通配符只能放在单词的结尾
SELECT * FROM table WHERE MATCH(field) AGAINST('好嗨*' IN BOOLEAN MODE)
好嗨哦~ | 好嗨哦 | 82年的好嗨哟 | ͡好嗨呦 |
---|---|---|---|
匹配到 | 匹配到 | 匹配不到 | 匹配不到 |
sql | count |
---|---|
select count(*) from table WHERE field LIKE "%好嗨%" |
21 |
SELECT count(*) FROM table WHERE MATCH(field) AGAINST('好嗨*' IN BOOLEAN MODE) |
19 |
select count(*) from table WHERE field LIKE "%aaa%" |
1887 |
SELECT count(*) FROM table WHERE MATCH(field) AGAINST('aaa*' IN BOOLEAN MODE) |
961 |
看mariadb是否能使用
ngram