Поддерживаемые формы выражений запросов (компонент Full-Text Search)

В данном разделе представлены формы полнотекстовых запросов, поддерживаемых SQL Server, а также описана поддержка для каждой формы запроса в полнотекстовых предикатах и функциях, возвращающих наборы строк. Полнотекстовые запросы могут выполняться только в столбцах с полнотекстовыми индексами.

Форма выражений запросов

Описание

Поддерживаются

Одно или несколько конкретных слов или фраз (простое выражение)

При полнотекстовом поиске слово считается лексемой. Лексема выделяется соответствующими средствами разбиения по словам на основе лингвистических правил выбранного языка. Допустимая фраза может состоять из нескольких слов со знаками препинания между ними или без них.

Например, «круассан» — это слово, а «кофе с молоком» — фраза. Такие слова и фразы называются простыми выражениями.

Дополнительные сведения см. в разделе Поиск конкретного слова или фразы (простое выражение).

Предикат CONTAINS и функция CONTAINSTABLE ищут точное совпадение для фразы. Предикат FREETEXT и функция FREETEXTTABLE разбивают фразу на отдельные слова.

Слова, начинающиеся заданным текстом, или фразы с такими словами (префиксные выражения)

Для создания производного слова или словоформ префиксное выражение обращается к строке, прикрепленной к началу слова.

Для единственного префиксного выражения частью результирующего набора будет любое слово, начинающееся с указанного выражения. Например, для префиксного выражения «auto*» совпадениями будут «automatic», «automobile» и т. д.

Внутри фразы каждое слово считается префиксным выражением. Например, выражение «авто тран*» соответствует фразам «автоматическая трансмиссия» и «автомобильный транспорт», но не «автомобильный личный транспорт».

Дополнительные сведения см. в разделе Поиск префиксных форм слов или фраз.

CONTAINS и CONTAINSTABLE

Словоформы конкретного слова (производное выражение)

Словоформы — это различные формы глаголов или существительные как в единственном, так и во множественном числе. Примером такого поиска может служить поиск словоформ слова «водить». Если разные строки таблицы содержат слова «водить», «водит», «водят», «водил» и «водите», все они войдут в результирующий набор, потому что каждое из этих слов можно образовать флективным способом от слова «водить».

Дополнительные сведения см. в разделе Поиск словоформ конкретного слова (производного выражения).

Запросы FREETEXT и FREETEXTTABLE по умолчанию ищут словоформы всех указанных слов.

Предикат CONTAINS и функция CONTAINSTABLE поддерживают необязательный аргумент INFLECTIONAL.

Слова или фразы, находящиеся рядом с другими словами или фразами (выражения с учетом расположения)

Выражение с учетом расположения указывает слова или фразы, находящиеся рядом с другим словом или фразой либо двумя словами или фразами в любом порядке.

Примером может служить поиск строк, в которых слово «лед» находится рядом со словом «хоккей» или фраза «хоккей на льду» — рядом с фразой «катание на коньках». Пользователь не может повлиять на то, будут ли считаться два выражения или фразы расположенными близко друг к другу, это вычисляется внутренним образом. При вычислении близости учитывается много точек данных.

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

Дополнительные сведения см. в разделе Поиск слов или фраз, расположенных рядом с другими словами или фразами (выражение с учетом расположения).

CONTAINSTABLE

ПримечаниеПримечание
Предикат FREETEXT и функция FREETEXTTABLE расценивают синтаксис, которым определяется близость выражений, как строки для поиска и не возвращают ожидаемых результатов.

Синонимические формы конкретного слова (тезаурус)

В тезаурусе определяются пользовательские синонимы терминов. Например, если в тезаурусе есть запись «{машина, автомобиль, грузовик, фургон}», можно искать синонимическую форму слова «машина». В результирующий набор войдут все строки таблицы, содержащие слова «автомобиль», «грузовик», «фургон» или «машина», потому что каждое из этих слов входит в состав расширяющего набора синонимов, содержащего и слово «машина».

Дополнительные сведения о структуре файлов тезауруса см. в разделе Конфигурация тезауруса.

По умолчанию тезаурус используется в запросах FREETEXT и FREETEXTTABLE.

Предикат CONTAINS и функция CONTAINSTABLE поддерживают необязательный аргумент THESAURUS.

Слова или фразы с взвешенными значениями (взвешенное выражение)

Взвешенное значение показывает уровень важности каждого слова и фразы в наборе слов и фраз. Значение веса 0,0 является самым низким, значение 1,0 — самым высоким.

Например, в запросе для поиска нескольких выражений можно задать вес для каждого искомого слова, обозначающий его значимость по сравнению с другими словами в условии поиска. Результат выполнения такого типа запроса будет в начале содержать наиболее релевантные строки, исходя из соответствующего веса, присвоенного искомым словам. В результирующих наборах содержатся документы или строки с любыми из указанных выражений (или содержимым, которое находится между ними), однако некоторые из результатов будут считаться важнее остальных ввиду разницы во взвешенных значениях, связанных с различными выражениями, по которым выполнялся поиск.

Дополнительные сведения см. в разделе Поиск слов или фраз с использованием взвешенных величин (взвешенное выражение).

CONTAINSTABLE

ПримечаниеПримечание
Использование предикатов CONTAINS или FREETEXT с взвешенными выражениями не придаст релевантности возвращенным строкам. Предикат FREETEXT и функция FREETEXTTABLE расценивают значения веса как строки для поиска и не возвращают ожидаемых результатов.