MySQL 8.0 リファレンスマニュアル


MySQL 8.0 リファレンスマニュアル  /  ...  /  クエリー拡張を使用した全文検索

12.10.3 クエリー拡張を使用した全文検索

全文検索では、クエリー拡張 (特に、そのバリアントの 「ブラインドクエリー拡張」) がサポートされています。 一般に、これは検索フレーズが短すぎるときに役立ちます。つまり、ユーザーは多くの場合暗黙的な知識に依存しますが、全文検索エンジンにはこれが不足していることを意味します。 たとえば、ユーザーが 「database」 を検索することは、実際は 「MySQL」、「Oracle」、「DB2」、および 「RDBMS」 がすべて、「databases」 に一致して返されるはずのフレーズであることを意味する場合があります。 これが暗黙的な知識です。

ブラインドクエリー拡張 (自動関連性フィードバックとも呼ばれる) は、検索フレーズのあとに WITH QUERY EXPANSION または IN NATURAL LANGUAGE MODE WITH QUERY EXPANSION を追加することで有効になります。 これは、検索を 2 回実行することで機能します。2 回目の検索での検索フレーズは、1 回目の検索でのもっとも関連性の高い数個のドキュメントと連結されたオリジナルの検索フレーズです。 したがって、これらのドキュメントのいずれかに単語 「databases」 および単語 「MySQL」 が含まれている場合は、単語 「database」 が含まれていなくても、2 回目の検索で単語 「MySQL」 を含むドキュメントが検索されます。 次の例では、この相違点を示します。

mysql> SELECT * FROM articles
    WHERE MATCH (title,body)
    AGAINST ('database' IN NATURAL LANGUAGE MODE);
+----+-------------------+------------------------------------------+
| id | title             | body                                     |
+----+-------------------+------------------------------------------+
|  1 | MySQL Tutorial    | DBMS stands for DataBase ...             |
|  5 | MySQL vs. YourSQL | In the following database comparison ... |
+----+-------------------+------------------------------------------+
2 rows in set (0.00 sec)

mysql> SELECT * FROM articles
    WHERE MATCH (title,body)
    AGAINST ('database' WITH QUERY EXPANSION);
+----+-----------------------+------------------------------------------+
| id | title                 | body                                     |
+----+-----------------------+------------------------------------------+
|  5 | MySQL vs. YourSQL     | In the following database comparison ... |
|  1 | MySQL Tutorial        | DBMS stands for DataBase ...             |
|  3 | Optimizing MySQL      | In this tutorial we show ...             |
|  6 | MySQL Security        | When configured properly, MySQL ...      |
|  2 | How To Use MySQL Well | After you went through a ...             |
|  4 | 1001 MySQL Tricks     | 1. Never run mysqld as root. 2. ...      |
+----+-----------------------+------------------------------------------+
6 rows in set (0.00 sec)

もう 1 つの例では、ユーザーが 「Maigret」 のスペルに自信がないときに、Georges Simenon 著の Maigret に関する書籍を検索しています。 クエリー拡張を使用しなければ、「Megre and the reluctant witnesses」 を検索しても 「Maigret and the Reluctant Witnesses」 のみが検索されます。 クエリー拡張を使用すれば、2 回目の検索で単語 「Maigret」 を含むすべての書籍が検索されます。

注記

ブラインドクエリー拡張には、関連性のないドキュメントが返されるとノイズが大幅に増加する傾向があるため、検索フレーズが短すぎる場合にのみ使用してください。


関連キーワード:  関数, 検索, 空間, 拡張, クエリー, フレーズ, database, リファレンス, ユーザー, 機能