次のようなMySQLクエリがあります。
SELECT *
FROM products
LEFT JOIN descriptions ON products.DescriptionID = descriptions.ID
WHERE MATCH (name, overview, specs) AGAINST ('ram');
検索しようとしているすべての列MATCH() AGAINST()
は FULLTEXT ですが、phpMyAdmin でテストすると次のエラーが発生します。
#1210 - Incorrect arguments to MATCH
列が 1 つしかない場合MATCH
はエラーにならず、正しく動作しますが、複数の列を作成しようとするとすぐにMATCH
このエラーで失敗します。MySQL 5.0.45 を実行していますが、MySQL 5.0 全文検索機能のドキュメントでは、これを実行できることが示されています。
のせいLEFT JOIN
ですか?一連の関数呼び出しをOR
まとめる必要がありますか?MATCH() AGAINST()
更新 @Zak:テーブル作成ステートメントを投稿することはできませんが、この例では列は次のように言えます: products.name
、descriptions.overview
、descriptions.specs
。それらを完全なtable.column
形式で指定しても、動作は変わりません。
products.name
ただし、から負けるMATCH()
と、次のエラーが表示されます。
#1191 - Can't find FULLTEXT index matching the column list
ただし、 と は両方ともdescriptions.overview
FULLTEXTdescriptions.specs
です。