2014-09-21 60 views
0

我有一個產品表不能正常工作,它包含這些數據:mysql的全文檢索精確匹配預期

  name   | 
------------------------- 
Nokia X 4GB Nokia X 3G | 
Nokia X 4GB 3G   | 
Nokia XL 4GB Nokia X 3G | 
Nokia XL 4GB Nokia X 3G | 
Nokia Asha 512   | 
Nokia Lumia 925   | 
Nokia Asha 306 2GB  | 
.... 

,然後當我運行此查詢:

SELECT name, 
MATCH(name) AGAINST('+Nokia +X +4GB +3G' IN BOOLEAN MODE) AS rank 
FROM products as p 
ORDER BY rank DESC limit 4; 

它應該返回前四名的結果,但我看到它返回

Nokia Asha 309 A00008390 
Nokia Asha 306 2GB 

任何人都知道爲什麼?

回答

0

MySQL全文索引的默認字長爲4個字符。您應該嘗試將其更改爲1個字符。要做到這一點,添加以下設置將my.ini文件中[mysqld]部分:

ft_min_word_len=1 

然後重新啓動MySQL服務器,然後刪除然後重新創建全文索引重建。

+0

看起來像'REPAIR TABLE products QUICK'會比刪除並重新創建索引好,對嗎? – 2014-09-21 08:38:40

+0

是的,我相信這也能完成這項工作。 – Peter 2014-09-21 08:52:13