我无法使用MySQL全文搜索工作

时间:2015-09-05 13:12:13

标签: mysql full-text-search

我有一个存储邮政/邮政编码列表的表格:

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');

我需要检查某行是否包含某个邮政/邮政编码。但是,它不起作用。例如,此查询返回ID为2的行,尽管'代码'专栏不包含' dfgdfgdfgdf'。那是为什么?

SELECT *
FROM postal_codes
WHERE MATCH(codes) AGAINST('+dfgdfgdfgdf' IN BOOLEAN MODE) AND id='2'

1 个答案:

答案 0 :(得分:1)

FULLTEXT因在小桌子上奇怪地工作而臭名昭着。您可以尝试使用几千行非重复性测试数据填充邮政编码表,然后再放弃它。

(我假设您已经考虑过对邮政编码表中的数据进行规范化,因此每个邮政编码只有一行。这是处理数字类型的一种更强大的方法 - 您正在尝试进行令牌搜索。)