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)
另一个例子可能是搜索乔治·西美浓关于梅格雷的书籍,当用户不确定如何拼写 “梅格雷” 时。搜索 “梅格雷和不愿作证的人” 仅在没有查询扩展的情况下找到 “梅格雷和不愿作证的人”。使用查询扩展的搜索在第二次搜索中找到所有包含单词 “梅格雷” 的书籍。
注意
因为盲查询扩展往往会通过返回不相关的文档来显着增加噪声,所以仅在搜索短语很短时才使用它。