2009-08-26 10 views
1

私はすでにこれについて質問を投稿しましたが、状況が新しいものを保証するのに十分に変化しました。MySQL FULLTEXTによる検索の問題

私はFULLTEXTインデックスを持つ7つの列があり、その中に3つのレコードを持つaromaProductsというMySQLテーブルを持っています。私は、それに対するクエリが好きで作るとき:

SELECT *をaromaProducts FROM WHERE MATCH AGAINST(タイトル)( 'カモミール');

私は正しい結果を得ます。私が検索する2番目のフィールドを追加してみてくださいしかし、私はエラーを取得する:

はFULLTEXTインデックスは罰金、自身の作品に列リスト

ごとに列に一致する見つけることができません。私は明示的にQUERY EXPANSIONと同じものを追加しています。

私は別のテーブルaromaProducts1を持っています。そして、一度に1つずつフィールドにFULLTEXTを割り当てるのではなく、テーブル作成の瞬間にすべて7に割り当てました。この表に対して、クエリは機能しません。テーブル構造を調べる場合、違いは、このです:

最初のテーブルの各フィールドは、それ自身のFULLTEXTインデックスを有する示す第一のインデックス、名前のタイトル(それが割り当てられた最初のフィールド)を有し、それはに適用されている間すべての7つのフィールド。

FULLTEXTを作成したすべての列は、VARCHARまたはTEXTのいずれかのデータ型です。私は問題が何かを知りません。

+0

マルチカラムアプローチにはどのような構文を使用していますか? – Eric

+0

これはフォローアップです:http://stackoverflow.com/questions/1328897/cant-assign-fulltext-index-on-my-table – karim79

答えて

5

あなたはに、あなたがCOL1、COL2とCOL3にフルテキストインデックスを作成する必要が(col1、col2、col3)に一致させたい場合は、

と一致しようとしているすべての列をフルテキストインデックスを作成する必要があります。あなたは(COL1、COL2)に一致させたい場合は、(col1とcol2の上)別のフルテキストインデックスを実装する必要があり、あなたは1つの全文を作成する必要がcol1の上の1、COL2とCOL3

+0

ああ、だから何でもいいですか?検索可能な列の組み合わせは、FULLTEXTインデックスを別にする必要がありますか?だから、私のすべてのフィールドをカバーするインデックスを1つ設定してから、すべての列を検索してください。 – user97410

+0

おい、それは真剣に台無しだ。一度FULLTEXT、いつもFULLTEXT、確かに?ああ、それは働いています - ありがとうございます:) – user97410

2

ことを使用することはできません複数の列を持つインデックス、各インデックスは1つではありません