2011-07-16 34 views
2

コードで少しでも遊んでSQLを理解しようとしているので、私はこの状況に遭遇しました。私はこのコードを実行する「列リストに一致するFULLTEXTインデックスが見つかりません」エラー

SELECT * FROM jobs WHERE MATCH (title, location, description) AGAINST ('New York designer') 

そして私は正しい行の結果を得る。しかし、私は自分自身に尋ねると、「大丈夫です。

SELECT * FROM jobs WHERE match(location) against ('designer') 

「列リストに一致するFULLTEXTインデックスが見つかりません」というエラーが表示されます。どうして?私はこのエラーが何を意味するのか分かりません。私はちょうど2つの単語とコンマを削除します。

MyISAMエンジンを使用するようにジョブテーブルを変更します。それは検索可能な意味ですか、「FULLTEXT」ですか? InnoDBは検索できないので、正しいと言えますか?

今、1つの列を検索するように分離されている場合は問題ですか?

これが意味をなさない場合はお知らせください。再編集します。

+3

「2単語とカンマを削除するだけです。」ソフトウェア開発の職業へようこそ。形式的な言語では、1つの文字は、無効な構文と有効な構文の違い、または2つの異なる意味を持つ有効な構文です。 –

答えて

7

FULLTEXTインデックスはMyISAMストレージエンジンの機能です。

その列だけにFULLTEXTというインデックスがない限り、ロケーション列と一致することはできません。

MATCH()列リストは、このMATCH()がBOOLEAN MODEになっていない限り、テーブルの一部のFULLTEXTインデックス定義の列リストと正確に一致する必要があります。ブールモード検索は、索引付けされていない列に対しても実行できますが、遅い可能性があります。それはdidnの

http://dev.mysql.com/doc/refman/5.0/en/fulltext-restrictions.html

1

すべてが正しかったと今でも私はキーが無効であることがわかった。このエラーを得た。..

を確認してくださいuは」は、テーブル上のキーを有効にしています私がキーを無効にしたときに私のために働く...

私は "ALTER TABLE table name ENABLE KEYS;

関連する問題