SQL стейтмент MATCH AGAINST

Материал из Энциклопедия о программировании
Перейти к: навигация, поиск

MATCH AGAINST — внутренний для СУБД MySQL SQL оператор полнотекстового индексного текстового поиска. Относящийся сугубо к СУБД MySQL, и не входящий в общую спецификацию языка SQL, SQL стейтмент MATCH AGAINST позволяет производить быстрый и релевантный поиск строк (слов и словосочетаний с морфологией), так же поиск по маскам, по полнотекстовым индексам.

Для режима BOOLEAN полнотекстовый индекс не требуется, для всех же остальных режимов поиска данный оператор будет производить поиск только по полям для которых создан полнотекстовый индекс (FULLTEXT INDEX).

Синтаксис

MATCH (<column1>, ...) AGAINST (<text_string_query> <search_modifier>)

Аргументы

  • <column1> — столбцы для которых создан полнотекстовый индекс, по которому будет вестись поиск.
  • <text_string_query> — строка поискового запроса.

В секции AGAINST за поисковым запросом так же указывается режим поиска:

  1. IN NATURAL LANGUAGE MODE — режим естественного языка
  2. IN BOOLEAN MODE — логический режим
  3. IN NATURAL LANGUAGE MODE WITH QUERY EXPANSION
  4. WITH QUERY EXPANSION

Операторы для работы в логическом режиме

В логическом режиме полнотекстового поиска поддерживаются следующие операторы:

+
Предшествующий слову знак «плюс» показывает, что это слово должно присутствовать в каждой возвращенной строке.
-
Предшествующий слову знак «минус» означает, что это слово не должно присутствовать в какой-либо возвращенной строке. По-умолчанию, если ни «плюс», ни «минус» не указаны, данное слово является необязательным, но содержащие его строки будут оцениваться более высоко. Это имитирует поведение команды MATCH() ... AGAINST() без модификатора IN BOOLEAN MODE.
> <
Эти два оператора используются для того, чтобы изменить вклад слова в величину релевантности, которое приписывается строке. Оператор < уменьшает этот вклад, а оператор > — увеличивает его.
(…)
Круглые скобки группируют слова в подвыражения.
~
Предшествующий слову знак «тильда» воздействует как оператор отрицания, обуславливая негативный вклад данного слова в релевантность строки. Им отмечают нежелательные слова. Строка, содержащая такое слово, будет оценена ниже других, но не будет исключена совершенно, как в случае оператора «минус».
*
«Звездочка» является оператором усечения. В отличие от остальных операторов, она должна добавляться в конце слова, а не в начале.
"…"
Фраза, заключенная в двойные кавычки, соответствует только строкам, содержащим эту фразу, написанную буквально.

Возвращаемые значения

Возвращает числовую степень схожести столбцов с поисковым запросом.

Примеры

SELECT id, title FROM table1 WHERE MATCH (title, description) AGAINST ('search string');

Ссылки

Это относится к СУБД MySQL.