2011-04-03 48 views
1

我有一個沼澤標準的MySQL全文查詢,如下:MySQL全文索引不會超過一個領域的工作

SELECT * FROM accounts WHERE MATCH(first_name, username) AGAINST ('stringhere')

的問題是,它無法找到場上first_name全文索引,儘管我現在已經索引了幾次。

SELECT * FROM accounts WHERE MATCH(username) AGAINST ('stringhere')

或者這樣:

SELECT * FROM accounts WHERE MATCH(first_name) AGAINST ('stringhere')

但不能與兩個或多個字段,當我做到這一點,它工作正常。我在這裏做錯了什麼?我做了一定的索引上的字段設置,我甚至已經修好的表,但仍然沒有worky :-(

我使用多個字段時,得到這樣的結果:

Error in query: Can't find FULLTEXT index matching the column list

這是混亂和刺激性,因爲就像我說的,我已經明確限定全文索引。

感謝您的幫助,

詹姆斯

回答

5

看到

show create table accounts 

輸出我想你有類似

FULLTEXT(first_name) 
FULLTEXT(username) 

,而不是

FULLTEXT(first_name,username) 
+0

你說得這將是有益的:'全文鍵'username' ('username'),FULLTEXT KEY'first_name'('first_name')'。我添加了所有我需要的字段,現在效果很好。謝謝! – Bojangles 2011-04-03 14:35:38

+0

您必須列出您希望包含在全文搜索中的所有列,正如我在答覆的最後一行中所寫的那樣。刪除您的索引並以正確的方式重新創建一個新索引。 – 2011-04-03 14:39:31