2012-07-17 66 views
5

我沒有收到任何與以下內容一起返回的行,我不知道爲什麼。我是否正確定義了全文索引?mysql全文搜索沒有返回記錄

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

回答

8

這是因爲關鍵字Smith中的所有行存在。 MySQL manual表示「存在於50%或更多行中的單詞被認爲是常見的並且不匹配」。

+3

這是新東西! :O不知道:)有趣。謝謝! – 2012-07-17 10:01:30

+0

我不知道,要麼:)非常感謝你! – Wintermute 2012-07-17 10:08:52