14.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.