2012-02-15 75 views
0

參考我以前的計算器post我試圖尋找相同點以通過以下發送的消息:MySQL的匹配問題

SELECT id, MATCH (content) AGAINST (content) AS score FROM pms_messages WHERE sender_id = '.$sender_id.' AND MATCH (content) AGAINST (content) AND score > 1; 

我看到的錯誤:#1210 - 不正確的參數AGAINST

我在我的內容字段上設置了FULLTEXT索引。從phpmyadmin:

Edit Drop fulltext_index FULLTEXT No No content 1 

我錯過了什麼?

回答

2

務必閱讀本手冊時,你會得到一個錯誤信息,它最快的幫助:

AGAINST takes a string to search for, and an optional modifier that indicates what type of search to perform. The search string must be a literal string, not a variable or a column name.

編號:http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html#function_match

所以你想實現的是做錯了什麼。使用文字字符串而不是列名稱。

參見11.9.5. Full-Text RestrictionsDocs,具體如下:

  • The argument to AGAINST() must be a constant string.
+0

我應該執行,以獲得內容的查詢之前,也可以用這一個查詢做什麼? – Paul 2012-02-15 14:48:05

+0

我不能告訴你你應該做什麼,但是我懷疑你可以用一個查詢來完成,因爲你需要將它作爲一個字符串傳遞。可能[存儲過程](http://dev.mysql.com/doc/refman/5.0/en/stored-routines.html)將爲您節省網絡往返時間。我的意思是你不想傳輸所有文本來獲得分數值,對吧?我可以給的另一個提示是針對您的確切錯誤消息字符串的谷歌。這可能會產生一些有用的結果(並不總是,但可能提供一些想法)。 – hakre 2012-02-15 14:50:55