2013-07-25 162 views
1

我在我的網站上有一個搜索位置,它允許用戶搜索內容。 直到今天,我使用LIKE函數做了這項工作,但由於數據庫很大,花了很長時間。這是我的代碼是如何模樣:全文搜索多個關鍵字

SELECT * FROM articles WHERE body LIKE '%how%' AND '%to%' AND '%code%' LIMIT 30" 

爲了提高速度,我發現,我可以使用全文搜索,這是我的代碼看起來像:

SELECT * FROM articles WHERE MATCH (body) AGAINST ('+how +to +code' IN BOOLEAN MODE)LIMIT 30; 

的問題是,返回行但它們只是隨機的,其中有一些單詞。

我在做什麼錯? :(

+0

您是否檢查過http://stackoverflow.com/questions/15371951/how-to-make-a-multiple-column -mysql,全文搜索,其中偏詞 - 是 - MATC/15372080#15372080嗎?你可以找到答案你的問題在那裏。 –

+0

你有就可以了'FULLTEXT'指數? –

+0

@ BartFriederichs是的,我做我的 –

回答

0

檢查你的MySQL安裝的ft_min_word_len -variable。你是爲匹配「到」這是2個字符,在默認情況下,全文索引被配置爲只索引詞用3

長度確保在更改ft_min_word_len值後在body列上重建您的FULLTEXT索引。

+0

我認爲你是對的。我會嘗試查找設置並查看 –

+0

它沒有工作,phpmyadmin showes ft_min_word_len = 2,但是每當我用少於四個字符的單詞時,就會給出零行。 –