【发布时间】:2019-07-25 21:40:20
【问题描述】:
我有这个数据库(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”搜索,一切正常。
查询失败是否有特定原因? 演示在这里
【问题讨论】:
-
如果不解决您的具体问题,我会发现很难在如此小的数据集上测试 FULLTEXT。
-
FULLTEXT 的默认
ft_min_word_len设置为 3,这意味着它不会索引长度较短的字符串。
标签: mysql match-against