我没有得到以下任何返回的行,而且我也不知道为什么。我是否正确定义了全文索引?
CREATE TABLE `client_contact` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`first_name` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
`last_name` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
`email` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
`phone` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL,
`company` int(11) DEFAULT NULL,
`billing_address` text COLLATE utf8_unicode_ci,
PRIMARY KEY (`id`),
FULLTEXT KEY `client_search` (`first_name`,`last_name`,`email`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
INSERT INTO `client_contact` (`first_name`, `last_name`, `email`, `phone`, `company`, `billing_address`) VALUES
('John', 'Smith', '[email protected]', '123456', 1, '1 Any Street'),
('Mary', 'Smith', '[email protected]', '123456', 1, '1 Any Street');
SELECT cl.*
FROM client_contact cl
WHERE MATCH(cl.first_name, cl.last_name, cl.email) AGAINST ('Smith')
SQL Fiddle here
最佳答案
这是因为关键字Smith
存在于所有行中。 MySQL manual说:“出现在50%或更多行中的单词被认为是通用的,不匹配”。
关于mysql全文搜索不返回记录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11519983/