全文検索はクエリの拡張をサポートします ( 特にその変異型の 「ブラインド クエリ拡張」 ) 。これは一般的に、検索フレーズが短すぎる時に役に立ちます。フレーズが短いのは主に、ユーザに曖昧な知識しかなく、全文検索エンジンの暗示検索能力に頼る場合ですが、全文検索エンジンではその能力が不十分です。例えばユーザが 「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」 を含むすべての書籍が検出されます。
注記 :ブラインド クエリ拡張は関連性のない雑多な資料も戻しがちなため、検索フレーズが短い時にだけ使用することをお薦めします。