2011-09-06 87 views
0

我有一個帶有'tags'字段的MySQL表,它使用了FULLTEXT索引。該字段包含逗號分隔值列表,即「書籍,玩具,巧克力色沙發」。帶分隔符的MySQL全文搜索

SELECT * FROM Store WHERE MATCH(Store.tags) AGAINST ('"chocolate"' IN BOOLEAN MODE); 

上面的示例查詢是匹配包含'巧克力色沙發'的記錄。我只想檢索分隔符中包含「巧克力」的記錄(在本例中爲逗號)。換句話說,我希望示例記錄會使比賽失敗。

我已經看了MySQL手冊,包括MySQL Fine-Tuning MySQL Full-Text Search,但我看不出有什麼辦法可以實現。

任何指針,將不勝感激。

回答

0

如果最後一個標籤有逗號,你可以搜索添加逗號:

SELECT * FROM Store WHERE MATCH(Store.tags) AGAINST ('"chocolate,"' IN BOOLEAN MODE); 

但要小心標籤少於4個字符,它的不匹配......嗯,你可以將其配置在my.ini

[mysqld] 
ft_min_word_len=3 
+1

這可能是最容易實現的解決方案。我會確保每個標籤都沒有引導和拖尾的白色空間,並用逗號括起來。然後我可以匹配'',巧克力,''。例如。謝謝。 – Richard

0

你必須標準化你的表格,所以每個標籤將被保存在自己的行中。

否則,您將不得不修補和重建MySQL以將空格字符添加到單詞字符集。您提供的鏈接有所有說明。

+0

感謝您的迅速回復。不幸的是,標準化不是一種選擇,因爲執行大量需要的連接會帶來性能開銷。如果我嘗試了你的第二個建議,是否仍然可以在含有空格的短語上進行匹配,即「真皮沙發」? – Richard