我无法使用 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 中的数据进行规范化,因此每个邮政编码一行。这是一种更强大的处理数字标记搜索的方式正在尝试做。)