MySQL 9.0 版本注意事項
全文搜尋支援查詢擴展(特別是其變體 「盲查詢擴展」)。當搜尋詞語太短時,這通常很有用,這通常表示使用者依賴全文搜尋引擎缺乏的隱含知識。例如,搜尋 「資料庫」 的使用者可能實際上是指 「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 和不情願的證人」 在沒有查詢擴展的情況下只會找到 「麥格雷和不情願的證人」。使用查詢擴展進行搜尋會在第二次傳遞中找到所有包含 「麥格雷」 一詞的書籍。
注意
因為盲查詢擴展往往會透過傳回不相關的文件而顯著增加雜訊,所以只有在搜尋詞語很短時才使用它。