我无法使用 MySQL 全文搜索
I can't get MySQL Fulltext search to work
我有一个 table 存储 postal/ZIP 代码列表:
CREATE TABLE IF NOT EXISTS `postal_codes` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`codes` text NOT NULL,
PRIMARY KEY (`id`),
FULLTEXT KEY `codes` (`codes`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=3;
INSERT INTO `postal_codes` (`id`, `codes`) VALUES
(1, '30301\r\n30302\r\n30303'),
(2, '90001\r\n90002\r\n90003\r\n90004\r\n90005');
我需要检查某行是否包含某个postal/ZIP代码。但是,它不起作用。例如,此查询 returns ID 为 2 的行,尽管 'codes' 列不包含 'dfgdfgdfgdf'。这是为什么?
SELECT *
FROM postal_codes
WHERE MATCH(codes) AGAINST('+dfgdfgdfgdf' IN BOOLEAN MODE) AND id='2'
FULLTEXT
因在小 table 上奇怪地工作而臭名昭著。在放弃之前,您可以尝试用几千行非重复测试数据填充您的邮政编码 table。
(我假设您已经考虑过对邮政编码 table 中的数据进行规范化,因此每个邮政编码一行。这是一种更强大的处理数字标记搜索的方式正在尝试做。)
我有一个 table 存储 postal/ZIP 代码列表:
CREATE TABLE IF NOT EXISTS `postal_codes` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`codes` text NOT NULL,
PRIMARY KEY (`id`),
FULLTEXT KEY `codes` (`codes`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=3;
INSERT INTO `postal_codes` (`id`, `codes`) VALUES
(1, '30301\r\n30302\r\n30303'),
(2, '90001\r\n90002\r\n90003\r\n90004\r\n90005');
我需要检查某行是否包含某个postal/ZIP代码。但是,它不起作用。例如,此查询 returns ID 为 2 的行,尽管 'codes' 列不包含 'dfgdfgdfgdf'。这是为什么?
SELECT *
FROM postal_codes
WHERE MATCH(codes) AGAINST('+dfgdfgdfgdf' IN BOOLEAN MODE) AND id='2'
FULLTEXT
因在小 table 上奇怪地工作而臭名昭著。在放弃之前,您可以尝试用几千行非重复测试数据填充您的邮政编码 table。
(我假设您已经考虑过对邮政编码 table 中的数据进行规范化,因此每个邮政编码一行。这是一种更强大的处理数字标记搜索的方式正在尝试做。)