12.9.3 Полные текстовые поиски с расширением запроса
Полный текстовый поиск поддерживает расширение запроса (и, в частности, его вариант «слепое расширение запроса»). Это полезно, когда поисковая фраза слишком короткая, что часто означает, что пользователь полагается на подразумеваемое знание, которого не хватает полному поисковому движку. Например, пользователь, ищущий «базу данных», может на самом деле подразумевать, что «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)
Другим примером может быть поиск книг Жоржа Сименона о Магрете, когда пользователь не уверен, как правильно написать «Магрет». Поиск «Мегре и нехотящие свидетели» находит только «Магрет и нехотящие свидетели» без расширения запроса. Поиск с расширением запроса находит все книги со словом «Магрет» во второй итерации.
Поскольку слепое расширение запроса, как правило, значительно увеличивает количество нерелевантных документов, используйте его только тогда, когда поисковая фраза короткая.
© 2025 Oracle
Licensed under the GPLv2 License.