【问题标题】:MYSQL - Full text match against fail for 'NA'MYSQL - 'NA'的全文匹配失败
【发布时间】: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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多