全文搜索支持查询扩展(特别是它的变体“盲查询扩展”)。当搜索短语太短时这通常很有用,这通常意味着用户依赖全文搜索引擎缺乏的隐含知识。例如,搜索 “ database ”的用户可能真正意味着 “ MySQL ”、“ Oracle ”、“ DB2 ”和“ RDBMS ”都是应与 “ databases ”匹配的词组也应该归还。这是隐含知识。
盲查询扩展(也称为自动相关性反馈)通过添加WITH QUERY
EXPANSION
或IN NATURAL LANGUAGE MODE WITH
QUERY EXPANSION
跟随搜索短语来启用。它通过执行两次搜索来工作,其中第二次搜索的搜索短语是原始搜索短语与第一次搜索中几个最相关的文档连接而成。因此,如果其中一个文档包含单词
“ databases ”和单词“ MySQL ”,则第二次搜索会找到包含单词
“ MySQL ”的文档,即使它们不包含单词
“ database ”. 以下示例显示了这种差异:
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)
另一个例子可能是当用户不确定如何拼写 “ Maigret ”时搜索 Georges Simenon 关于 Maigret 的书籍。搜索“ Megre and the Reluctant Witnesses ”只会找到“ Maigret and the Reluctant Witnesses ”,而没有查询扩展。带有查询扩展的搜索会 在第二遍中 找到所有包含单词“ Maigret ”的书籍。
由于盲目查询扩展往往会通过返回不相关的文档来显着增加噪音,因此仅在搜索短语较短时才使用它。