Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
EPUB - 7.5Mb
HTML Download (TGZ) - 7.2Mb
HTML Download (Zip) - 7.2Mb


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

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

全文検索では、クエリー拡張 (特に、そのバリアントの ブラインドクエリー拡張) がサポートされています。一般に、これは検索フレーズが短すぎるときに役立ちます。つまり、ユーザーは多くの場合暗黙的な知識に依存しますが、全文検索エンジンにはこれが不足していることを意味します。たとえば、ユーザーが database を検索することは、実際は MySQLOracleDB2、および 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 will 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 を含むすべての書籍が検索されます。

注記

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


User Comments
  Posted by E Garcia on May 26, 2005
"Note: Because blind query expansion tends to increase noise significantly by returning non-relevant documents, it's only meaningful to use when a search phrase is rather short."

Well put. As terms in the query increase, the blind query expansion tends to return not so relevant results. In this case the query as a whole behaves as a single ambiguous "term"; i.e., conveying multiple meanings.

Dr. E. Garcia
  Posted by Eric Marden on February 10, 2006
Adding WITH QUERY EXPANSION is sometimes the only way I can get results back from a full-text search. Try that if you don't seem to be getting any results from your queries, but a similar LIKE '%term%' query is pulling back results.
Sign Up Login You must be logged in to post a comment.