2011-12-06 21 views
1

ユーザーが入力するキーワードに対して複数の列と一致する簡易検索ボックスを作成しようとしています。次のコードは、MySQLのMATCH/AGAINSTを使用する私の試みです。しかし、2つの列が指定されている場合(この場合は「トピック、国」)には、クエリを正しく実行することができません。コードを「国」または「トピック」として実行すると実行されますが、両方は実行されません。複数の列を持つMySQLとの一致

これには秘密がありますか?

SELECT * , 
MATCH (
topic, country 
) 
AGAINST (
'China' 
) AS score 
FROM reports2 
WHERE MATCH (
topic, country 
) 
AGAINST (
'China' 
) 
ORDER BY score DESC 

利回り:

#1191 - Can't find FULLTEXT index matching the column list 

私はこれらの両方のためのFULLTEXTインデックスがあるため、エラーの不正確な記述であることがわかりました。テーブルをコピーしてINNODBからMyISAMに変換して、そうすることもできました。

何か提案がありがとうございます。

答えて

6

あなたは、各列のフルテキストインデックスを必要としませんが、

FULLTEXT_INDEX(topic, country) 

両方の列をカバーする単一フルテキストインデックスは、各列上の単一のインデックスを持つことになるない仕事

FULLTEXT(topic); FULLTEXT(country); /* will not work as expected */ 

Iまた、順序が重要だと思うが、私はその点で間違っている可能性があります

+0

この回答をお寄せいただきありがとうございます。 それについて。 :) –

関連する問題