mysql 中的全文搜索未检索到所有行

Fulltext search in mysql doesn't retrieve all rows

我在 mysql 中的查询有问题。

这是我所做的:

CREATE TABLE `dar`.`MyTable` (
  `MyCol` VARCHAR(100) NOT NULL,
  FULLTEXT INDEX `Index_1`(`MyCol`)
) 
ENGINE = MyISAM;

INSERT INTO MyTable (MyCol)
VALUES ('6002.C3'),
       ('6002'),
       ('6002R1'),
       ('6003.C4'),
       ('AA6002.X'),
       ('BB 6002.X');

这不是必需的,但我已经做了:

REPAIR TABLE MyTable QUICK;

现在,我执行下一个查询:

SELECT MyCol FROM MyTable
WHERE MATCH(MyCol) AGAINST ('6002*');

而且,它没有 return 任何行!!

参数ft_min_word_len我改成2了,但是什么都没变

当删除带有 'BB 6002.X' 的行时,查询 returns 2 行!!

6002
6002.C3

真令人毛骨悚然。

知道这里发生了什么吗?

我需要查询 return:

6002.C3
6002
6002R1

加上如果包括:

AA6002.X
BB 6002.X

提前致谢!!

您已超过数据集中 50% 的阈值。尝试

SELECT MyCol FROM MyTable
WHERE MATCH(MyCol) AGAINST ('6003');

看看结果如何。

当您第一次尝试全文搜索以查看其工作原理时,50% 的阈值具有重要意义:如果您创建一个 table 并仅向其中插入一两行文本,则每个单词在文本中至少出现在 50% 的行中。结果,没有搜索 returns 任何结果。请务必插入至少三行,最好更多。需要绕过50%限制的用户可以使用布尔搜索模式;参见第 12.9.2 节,“布尔全文搜索”。

http://dev.mysql.com/doc/refman/5.0/en/fulltext-natural-language.html