具有查询扩展的全文本搜索
全文搜索支持查询扩展(尤其是其变体“盲查询扩展”)。当搜索短语太短时,这通常很有用,这通常意味着用户依赖于全文搜索引擎所缺乏的隐含知识。例如,搜索“数据库”的用户可能实际上意味着“ MySQL ”,“ Oracle ”,“ DB2 ”和“ RDBMS ”都是应与“数据库”匹配的短语并且也应该退货。这就是隐含的知识。
通过添加WITH QUERY EXPANSION
或IN NATURAL LANGUAGE MODE WITH QUERY EXPANSION
跟随搜索短语,可以启用盲查询扩展(也称为自动相关性反馈)。它通过执行两次搜索来工作,其中第二次搜索的搜索短语是原始搜索短语,并与来自第一次搜索的少数几个最相关的文档连接在一起。因此,如果这些文档之一包含单词“ database ”和单词“ MySQL ”,则第二个搜索将查找包含单词“ MySQL ”的文档,即使它们不包含单词“ database ”。以下示例显示了这种差异:
mysql>SELECT *FROM articlesWHERE 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 articlesWHERE 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 will 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和不情愿的证人”仅找到“ Maigret和不情愿的证人”,而没有查询扩展。带有查询扩展的搜索会在第二遍查找中找到所有带有单词“ Maigret ”的图书。
注意由于盲查询扩展往往会通过返回不相关的文档而显着增加噪声,因此仅在搜索短语较短时才使用它。