首页 > 解决方案 > MYSQL - 'NA'的全文匹配失败

问题描述

我有这个数据库(MySql v5.7)

DROP TABLE IF EXISTS test3_sim;
CREATE TABLE test3_sim (
ID INT not null,
texto VARCHAR(1024)
);

ALTER TABLE test3_sim ADD FULLTEXT(texto);

INSERT INTO test3_sim (id,texto) VALUES (1,'NA');
INSERT INTO test3_sim (id,texto) VALUES (2,'NA');
INSERT INTO test3_sim (id,texto) VALUES (3,'DUPLICATE');
INSERT INTO test3_sim (id,texto) VALUES (4,'OTH');
INSERT INTO test3_sim (id,texto) VALUES (5,'NOP');
INSERT INTO test3_sim (id,texto) VALUES (6,'NOP');
INSERT INTO test3_sim (id,texto) VALUES (7,null);

我在 BOOLEAN MODE 中通过全文语法执行一些搜索,搜索不同的值匹配。当我搜索术语“NA”时,我无法真正弄清楚为什么它会失败:此查询结果为空:

SELECT id, texto
FROM test3_sim
WHERE MATCH (texto) AGAINST ('NA' IN BOOLEAN MODE)
AND texto is not null

但它应该输出前 2 行。

对于“DUPLICATE”、“OTH”、“NOP”搜索,一切正常。

查询失败是否有特定原因?演示在这里

标签: mysqlmatch-against

解决方案


根据@Raymond Nijaland 的评论,FULLTEXT 的默认 ft_min_word_len 设置为 3,这意味着它不会索引长度小于的字符串


推荐阅读