2013-03-31 50 views
1

我跟着this tutorial進行mysql全文搜索。mysql全文查詢區別

我有這個表:

CREATE TABLE IF NOT EXISTS `test` (
    `id` int(20) NOT NULL AUTO_INCREMENT, 
    `textrow` varchar(256) NOT NULL, 
    PRIMARY KEY (`id`), 
    FULLTEXT KEY `textrow` (`textrow`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ; 

INSERT INTO `test` (`id`, `textrow`) VALUES 
(1, 'Agajan Torayev'), 
(2, 'torayeff'); 

ALTER TABLE test ADD FULLTEXT(textrow); 

是什麼(人給零次的結果),這些查詢之間的區別:

mysql> SELECT * FROM test WHERE MATCH(textrow) AGAINST('agajan'); 
Empty set (0.00 sec) 

mysql> SELECT *, MATCH(textrow) AGAINST('agajan') FROM test; 
+----+----------------+----------------------------------+ 
| id | textrow  | MATCH(textrow) AGAINST('agajan') | 
+----+----------------+----------------------------------+ 
| 1 | Agajan Torayev |        0 | 
| 2 | torayeff  |        0 | 
+----+----------------+----------------------------------+ 
2 rows in set (0.00 sec) 

回答

1

不同的是,在第一個查詢是用match ing數據和輸出的第二個查詢來過濾結果al l記錄並添加一列以顯示將導致什麼結果。

雖然因爲

自然語言搜索解釋搜索字符串作爲自然人類語言(自由文本短語)短語你沒有得到結果。 [...]另外,存在於50%或更多行中的單詞被認爲是通用的,並且不匹配

Taken from MySQL Full-Text Search Functions

+0

不過,爲什麼第一次查詢給出0的結果,它應該與第一次插入???? – torayeff

+1

全文匹配僅在搜索到的單詞少於記錄的50%時返回結果。否則它會被忽略爲一個常用詞。 –