web-dev-qa-db-ja.com

列リストに一致するFULLTEXTインデックスが見つかりません(インデックスが設定されています)

私はフルテキストを使用しています。フルテキストインデックスを複数のコメントに追加するコマンドを実行し、エラーを返しませんでした。

SELECT * FROM products WHERE MATCH(`brand`) AGAINST('Skoda');

これはブランド列にあります-しかし、私は次のようになります:

列リストに一致するFULLTEXTインデックスが見つかりません

Eventho、私のテーブルが次のように見えるとき:

FULLTEXT KEY `name` (`name`,`breadcrumb`,`description`,`brand`,`price`,`year`,`km`,`usage`,`type`)

代わりにnameを使用する必要があるためですか?検索を行うには?または何が間違っている可能性があります。

39
LucasRolff

MyISAMエンジンを使用していると仮定して、実行:

ALTER TABLE products ADD FULLTEXT(brand);

フルテキストインデックスには、MATCH句で説明した順序とまったく同じ数の列が含まれている必要があります。

95
jerrymouse

すべてが正しく、それでもこのエラーが発生した場合、KEYSが無効になっていることがわかりました。時々見過ごされる単純なエラー:

そのテーブルでキーが有効になっていることを確認してください。

キーを無効にしたときはうまくいきませんでした。しかし、キーを有効にするとALTER TABLE table name ENABLE KEYS;それはうまくいきました

7
karthic

Match句と同じ順序(または同じ番号)で列を配置したくない場合は、常に「OR」を使用できます。

ALTER TABLE products ADD FULLTEXT(brand);
ALTER TABLE products ADD FULLTEXT(product_name);

 SELECT * FROM products WHERE MATCH(brand) AGAINST('+Skoda*' IN BOOLEAN MODE) OR MATCH(product_name) AGAINST('+productName*' IN BOOLEAN MODE)
5
Chogo