0

次のような単純なクエリを実行しようとしています。

SELECT *, 
MATCH(`col1`,`col2`) 
AGAINST ('some text') AS score
FROM `mytable` ORDER BY score DESC

これにより、常にエラーが発生します。

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

しかし、列を分割して次のような 2 つのクエリを実行すると、次のようになります。

SELECT *, 
MATCH(`col1`) 
AGAINST ('some text') AS score
FROM `mytable` ORDER BY score DESC

と:

SELECT *, 
MATCH(`col2`) 
AGAINST ('some text') AS score
FROM `mytable` ORDER BY score DESC

その後、それは機能します。両方の列を同時に照合できないのはなぜですか? マニュアルには、次のようにほぼ同じことを行う例があります。

mysql> SELECT id, body, MATCH (title,body) AGAINST
    -> ('Security implications of running MySQL as root') AS score
    -> FROM articles WHERE MATCH (title,body) AGAINST
    -> ('Security implications of running MySQL as root');
4

2 に答える 2

3

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

両方の列に一緒に FULLTEXT インデックスが必要です。 FULLTEXT (col1,col2)

于 2012-12-30T16:14:30.517 に答える
2

クエリされたフィールドに一致するインデックスが必要です。ドキュメントから:

MATCH() 列リストは、テーブルの一部の FULLTEXT インデックス定義の列リストと正確に一致する必要があります。

于 2012-12-30T16:13:45.367 に答える