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
我在 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