全文検索はクエリーの拡張をサポートします (特にそのバリアントの 「ブラインドクエリー拡張」) 。これは一般的に、検索フレーズが短すぎるときに役に立ちます。フレーズが短いのは主に、ユーザーにあいまいな知識しかなく、全文検索エンジンの暗示検索能力に頼る場合ですが、全文検索エンジンではその能力が不十分です。たとえばユーザーが 「database」 で検索する場合は、「MySQL」 、「Oracle」 、「DB2」 、そして 「RDBMS」 を指していると考えられ、これらのフレーズはすべて 「databases」 とマッチし戻されます。これが暗示検索能力です。
ブラインドクエリー拡張
(自動関連フィードバックとも言う)
は、検索フレーズの後に WITH
QUERY EXPANSION
または IN
NATURAL LANGUAGE MODE WITH QUERY EXPANSION
を加えることによって有効になります。これは検索を
2 度行うことで作動し、2
度目の検索には、最初の検索で検出された資料から、もっとも関連性の強い単語を抜き出してつなぎ合わせた、独自の検索フレーズを使用します。従って、資料のどれかに単語
「databases」 および 「MySQL」
が含まれている場合、2 度目の検索では
「database」
を含んでいなくても、「MySQL」
を含む資料が検出されます。次の例はその相違点を示しています
:
mysql>SELECT * FROM articles
->WHERE MATCH (title,body)
->AGAINST ('database' IN NATURAL LANGUAGE MODE);
+----+-------------------+------------------------------------------+ | id | title | body | +----+-------------------+------------------------------------------+ | 5 | MySQL vs. YourSQL | In the following database comparison ... | | 1 | MySQL Tutorial | DBMS stands for DataBase ... | +----+-------------------+------------------------------------------+ 2 rows in set (0.00 sec) mysql>SELECT * FROM articles
->WHERE MATCH (title,body)
->AGAINST ('database' WITH QUERY EXPANSION);
+----+-------------------+------------------------------------------+ | id | title | body | +----+-------------------+------------------------------------------+ | 1 | MySQL Tutorial | DBMS stands for DataBase ... | | 5 | MySQL vs. YourSQL | In the following database comparison ... | | 3 | Optimizing MySQL | In this tutorial we will show ... | +----+-------------------+------------------------------------------+ 3 rows in set (0.00 sec)
ほかの例では、Georges Simenon 著の Maigret についての書籍を検索するときに、ユーザーが 「Maigret」 のスペルを知らないと仮定します。クエリー拡張なしで、「Megre and the reluctant witnesses」 で検索した場合、「Maigret and the Reluctant Witnesses」 の単語群でしか検出されません。クエリー拡張を使用すれば、2 度目の検索で、「Maigret」 を含むすべての書籍が検出されます。
ブラインドクエリー拡張は関連性のない雑多な資料も戻しがちなため、検索フレーズが短いときにだけ使用することをお薦めします。