MySQL 8.4 版本資訊
全文字搜尋支援查詢擴展(尤其是其變體「盲目查詢擴展」)。當搜尋詞組太短時,這通常很有用,這通常意味著使用者依賴全文字搜尋引擎缺乏的隱含知識。例如,搜尋「資料庫」的使用者可能實際上指的是「MySQL」、「Oracle」、「DB2」和「RDBMS」都應該符合「資料庫」並且也應該傳回。這是隱含知識。
盲目查詢擴展(也稱為自動相關性回饋)是透過在搜尋詞組後面新增 WITH QUERY EXPANSION
或 IN NATURAL LANGUAGE MODE WITH QUERY EXPANSION
來啟用。其運作方式是執行兩次搜尋,其中第二次搜尋的搜尋詞組是原始搜尋詞組與第一次搜尋中最相關的少數文件串連。因此,如果這些文件之一包含單字「資料庫」和單字「MySQL」,則第二次搜尋會找到包含單字「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)
另一個範例可能是搜尋喬治·西默農關於梅格雷的書籍,當使用者不確定如何拼寫「梅格雷」時。搜尋「Megre and the reluctant witnesses」只會找到「Maigret and the Reluctant Witnesses」而沒有查詢擴展。使用查詢擴展進行搜尋會在第二次傳遞中找到所有包含單字「Maigret」的書籍。
注意
由於盲目查詢擴展往往會因傳回不相關的文件而顯著增加雜訊,因此僅在搜尋詞組較短時使用它。