Поделиться через


CONTAINS (Transact-SQL)

Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure

Осуществляет поиск точных или нечетких (менее точных) совпадений с отдельными словами и фразами, слов на определенном расстоянии друг от друга или взвешенных совпадений в SQL Server. CONTAINS — предикат, используемый в предложении WHERE инструкции SELECT Transact-SQL для выполнения полнотекстового поиска SQL Server по столбцам полнотекстового индекса, содержащим символьные типы данных.

CONTAINS может производить поиск:

  • слова или фразы;

  • префикса слова или фразы;

  • слова около другого слова;

  • слова, флективно сформированного из другого (например, слово «drive» является флективной основой слов «drives», «drove», «driving» и «driven»);

  • Слово, которое является синонимом другого слова согласно тезаурусу (например, у слова «металл» могут быть синонимы «алюминий» и «сталь»).

Сведения о формах полнотекстового поиска, поддерживаемых SQL Server, см. в статье "Запрос" с полнотекстовой поиском.

Соглашения о синтаксисе Transact-SQL

Синтаксис

CONTAINS (   
     {   
        column_name | ( column_list )   
      | *   
      | PROPERTY ( { column_name }, 'property_name' )    
     }   
     , '<contains_search_condition>'  
     [ , LANGUAGE language_term ]  
   )   
  
<contains_search_condition> ::=   
  {   
      <simple_term>   
    | <prefix_term>   
    | <generation_term>   
    | <generic_proximity_term>   
    | <custom_proximity_term>   
    | <weighted_term>   
    }   
  |   
    { ( <contains_search_condition> )   
        [ { <AND> | <AND NOT> | <OR> } ]   
        <contains_search_condition> [ ...n ]   
  }   
<simple_term> ::=   
     { word | "phrase" }  
  
<prefix term> ::=   
  { "word*" | "phrase*" }  
  
<generation_term> ::=   
  FORMSOF ( { INFLECTIONAL | THESAURUS } , <simple_term> [ ,...n ] )   
  
<generic_proximity_term> ::=   
  { <simple_term> | <prefix_term> } { { { NEAR | ~ }   
     { <simple_term> | <prefix_term> } } [ ...n ] }  
  
<custom_proximity_term> ::=   
  NEAR (   
     {  
        { <simple_term> | <prefix_term> } [ ,...n ]  
     |  
        ( { <simple_term> | <prefix_term> } [ ,...n ] )   
      [, <maximum_distance> [, <match_order> ] ]  
     }  
       )   
  
      <maximum_distance> ::= { integer | MAX }  
      <match_order> ::= { TRUE | FALSE }   
  
<weighted_term> ::=   
  ISABOUT   
   ( {   
        {   
          <simple_term>   
        | <prefix_term>   
        | <generation_term>   
        | <proximity_term>   
        }   
      [ WEIGHT ( weight_value ) ]   
      } [ ,...n ]   
   )   
  
<AND> ::=   
  { AND | & }  
  
<AND NOT> ::=   
  { AND NOT | &! }  
  
<OR> ::=   
  { OR | | }  
  

Примечание.

Сведения о синтаксисе Transact-SQL для SQL Server 2014 (12.x) и более ранних версиях см . в документации по предыдущим версиям.

Аргументы

column_name
Имя столбца с полнотекстовым индексом в таблице, указанной в предложении FROM. Столбцы должны иметь тип char, varchar, nchar, nvarchar, text, ntext, image, xml, varbinary или varbinary(max).

column_list
Задает несколько столбцов, разделенных запятыми. column_list должен быть заключен в скобки. Если задан аргумент language_term, то у всех столбцов в column_list должен быть одинаковый язык.

*
Указывает, что запрос выполняет поиск по заданному условию во всех столбцах таблицы, указанной в предложении FROM, для которых существуют полнотекстовые индексы. Столбцы в предложении CONTAINS должны принадлежать одной таблице, для которой существует полнотекстовый индекс. Если не определен аргумент language_term, язык для всех столбцов таблицы должен быть одинаковым.

PROPERTY ( column_name , 'property_name')
Область применения: SQL Server 2012 (11.x) и более поздних версий.

Указывает свойство документа, по которому нужно выполнить поиск по заданному условию.

Внимание

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

LANGUAGE language_term
Язык, используемый для разбиения по словам, морфологического поиска, расширения и замены тезауруса, а также для удаления пропускаемых слов (или стоп-слов) в ходе запроса. Это необязательный параметр.

Если в одном столбце хранятся документы на различных языках в виде больших двоичных объектов, то код локали (LCID) заданного документа определяет, какой язык должен использоваться для индексирования его содержимого. Указание аргумента LANGUAGE language_term при запросе к такому столбцу может повысить вероятность хорошего соответствия.

Аргумент language_term при необходимости может быть указан в виде строки, целого числа или шестнадцатеричного значения, соответствующего коду языка. Если аргумент language_term задан, то соответствующий язык будет применяться ко всем элементам условия поиска. Если значение не указано, то используется язык полнотекстового поиска, заданный для столбца.

Если аргумент language_term является строкой, он соответствует значению столбца alias в представлении совместимости sys.languages (Transact-SQ). Строка должна быть заключена в одиночные кавычки: 'language_term'. Если значением аргумента language_term является целое число, оно представляет собой действительный код языка. Если значение language_term задано в шестнадцатеричной форме, то после символов "0x" должна следовать шестнадцатеричная запись кода языка. Шестнадцатеричное значение не может иметь более восьми знаков, включая начальные нули.

Если значение указано в формате двухбайтовой кодировки (DBCS), SQL Server преобразует его в Юникод.

Если указанный язык является недопустимым или связанные с ним ресурсы не установлены, SQL Server возвращает сообщение об ошибке. Для использования нейтральных языковых ресурсов следует указать 0x0 в качестве значения аргумента language_term.

<contains_search_condition>
Текст, который необходимо найти в столбце column_name, и условия соответствия.

<contains_search_condition> является nvarchar. Если в качестве входных данных используется другой тип символьных данных, производится неявное преобразование. Типы данных больших значений nvarchar(max) и varchar(max) использовать нельзя. В следующем примере переменная @SearchWord, тип которой определен как varchar(30), вызывает неявное преобразование в предикате CONTAINS.

USE AdventureWorks2022;  
GO  
DECLARE @SearchWord VARCHAR(30)  
SET @SearchWord ='performance'  
SELECT Description   
FROM Production.ProductDescription   
WHERE CONTAINS(Description, @SearchWord);  

Так как пробное сохранение параметров не работает с преобразованием, для улучшения производительности следует использовать тип nvarchar. В данном примере следует объявить переменную @SearchWord с типом nvarchar(30).

USE AdventureWorks2022;  
GO  
DECLARE @SearchWord NVARCHAR(30)  
SET @SearchWord = N'performance'  
SELECT Description   
FROM Production.ProductDescription   
WHERE CONTAINS(Description, @SearchWord);  

Можно также воспользоваться указанием запроса OPTIMIZE FOR в случаях, когда формируется неоптимальный план.

word
Строка символов без пробелов и знаков препинания.

phrase
Одно или несколько слов с пробелами между ними.

Примечание.

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

<simple_term>
Указывает соответствие для точного слова или фразы. Примерами допустимых простых выражений являются "база данных", данные и "Microsoft SQL Server". Фразы должны заключаться в двойные кавычки (""). Порядок слов во фразе по мере их появления в столбце базы данных должен быть таким, как указано в аргументе <contains_search_condition>. Поиск символов в слове или фразе проводится без учета регистра. Пропускаемые слова (или стоп-слова, такие как "a", "and" или "the"), содержащиеся в столбцах полнотекстового индекса, не хранятся в полнотекстовом индексе. Если при поиске по одному слову используется слово из числа пропускаемых, SQL Server возвращает сообщение об ошибке, указывающее, что запрос содержит только пропускаемые слова. SQL Server хранит стандартный список пропускаемых слов в каталоге \Mssql\Binn\FTERef каждого экземпляра SQL Server.

Знаки препинания пропускаются. Поэтому предикат CONTAINS(testing, "computer failure") соответствует строке «Where is my computer? Если это не выяснить, могут возникнуть значительные проблемы. Дополнительные сведения о функционировании средства разбиения по словам см. в разделе Настройка средств разбиения текста на слова и парадигматических модулей и управление ими для поиска.

<prefix_term>
Указывает совпадение слов или фраз, начинающихся с указанного текста. Заключите термин префикса в двойные кавычки ("") и добавьте звездочку (*) до конечной кавычки, чтобы все текст, начиная с простого термина, указанного до сопоставления звездочки. Предложение должно быть задано таким образом: CONTAINS (column, '"text*"'). Звездочка заменяет ноль, один или более символов (корневого слова или слов в слове или фразе). Если текст и звездочка не заключены в двойные кавычки и предикат выглядит как CONTAINS (column, 'text*'), то полнотекстовый поиск считает звездочку символом и ищет точное совпадение с text*. Подсистема полнотекстового текста не будет находить слова со звездочкой (*), так как средства разбиения слов обычно игнорируют такие символы.

Если параметр <prefix_term>> является фразой, то каждое содержащееся во фразе слово считается отдельным префиксом. Этому запросу, задающему префиксное выражение «local wine*», отвечают все строки с текстом «local winery», «locally wined and dined» и т. д.

<generation_term>
Задает совпадение слов, если включенные простые выражения содержат варианты начального искомого слова.

INFLECTIONAL
Задает языковой парадигматический модуль, который будет использован для заданного простого выражения. Поведение парадигматического модуля определено правилами формирования основ для каждого конкретного языка. У нейтрального языка нет ассоциированного с ним парадигматического модуля. Язык столбцов, к которым выполняется запрос, используется для обращения к необходимому парадигматическому модулю. Если указан аргумент language_term, используется парадигматический модуль, соответствующий этому языку.

Указанный <simple_term> в <generation_term> не будет соответствовать одновременно существительным и глаголам.

THESAURUS
Указывает, что используется тезаурус, соответствующий языку полнотекстового поиска столбца или языку, заданному в запросе. Самый длинный шаблон или шаблоны <simple_term> сравниваются с тезаурусом, и создаются дополнительные критерии, которые можно использовать для дополнения или замены исходного шаблона. Если совпадений не найдено для всего аргумента <simple_term> или для его части, несовпадающая часть обрабатывается как simple_term. Дополнительные сведения о тезаурусах полнотекстового поиска см. в разделе Настройка файлов тезауруса для полнотекстового поиска и управление ими.

<generic_proximity_term>
Указывает совпадение слов или фраз, которые должны находиться в документе, где выполняется поиск.

Внимание

Эта функция будет удалена в будущей версии SQL Server. Избегайте использования этого компонента в новых разработках и запланируйте изменение существующих приложений, в которых он применяется. Рекомендуется использовать <custom_proximity_term>.

NEAR | ~
Показывает, что для получения соответствия необходимо, чтобы в документе встречались слово или фраза, указанные с каждой стороны оператора NEAR или ~. Должно быть указано два поисковых выражения. Это условие поиска может быть либо одним словом, либо фразой, заключенной в двойные кавычки ("phrase").

Несколько выражений с учетом расположения можно объединять в цепочки, например a NEAR b NEAR c или a ~ b ~ c. Для получения соответствия необходимо, чтобы все выражения с учетом расположения, входящие в цепочку, находились в документе.

Например, CONTAINS(*column_name*, 'fox NEAR chicken') и CONTAINSTABLE(*table_name*, *column_name*, 'fox ~ chicken') вернут все документы в указанном столбце, которые содержат оба слова "fox" и "chicken". Кроме того, функция CONTAINSTABLE возвращает для каждого документа ранг, основанный на схожести слов «лиса» и «курица». Например, если документ содержит предложение «The fox ate the chicken», то оно будет иметь высокий рейтинг, поскольку эти выражения расположены ближе друг к другу, чем в других документах.

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

<custom_proximity_term>
Область применения: SQL Server 2012 (11.x) и более поздних версий.

Указывает совпадение слов или фраз и (необязательно) максимально допустимое расстояние между поисковыми выражениями. Можно также указать, что критерии поиска должны располагаться точно в том порядке, в котором они заданы с помощью (<match_order>).

Это условие поиска может быть либо одним словом, либо фразой, заключенной в двойные кавычки ("phrase"). Для возвращения документа в нем должно быть найдено каждое из указанных выражений. Необходимо указать не менее двух поисковых выражений. Максимальное количество поисковых выражений — 64.

По умолчанию настраиваемое выражение с учетом расположения возвращает строки, которые содержат указанные выражения, вне зависимости от расстояния между ними и порядка расположения. Например, для соответствия следующему запросу документ должен просто содержать term1 и «term3 term4» в любом месте, в любом порядке:

CONTAINS(column_name, 'NEAR(term1,"term3 term4")')  

Необязательные параметры:

<maximum_distance>
Указывает максимальное допустимое расстояние между поисковыми выражениями в начале и конце строки, при котором эта строка еще считается совпадением.

integer
Указывает положительное целое число от 0 до 4294967295. Это значение управляет тем, как много непоисковых выражений может находиться между первым и последним поисковыми выражениями, исключая все прочие указанные поисковые выражения.

Например, следующий запрос ищет AA и BB в любом порядке с максимальным расстоянием в пять выражений.

CONTAINS(column_name, 'NEAR((AA,BB),5)')  

Строка AA one two three four five BB будет найдена. В следующем примере запрос содержит три поисковых выражения — AA, BB и CC с максимальным расстоянием в пять слов:

CONTAINS(column_name, 'NEAR((AA,BB,CC),5)')  

Этот запрос найдет следующую строку, в которой общее расстояние составляет пять слов:

BB one two CC three four five A A

Обратите внимание, что внутренний поисковый запрос CC не учитывается при подсчете расстояния.

MAX
Возвращает строки, содержащие указанные поисковые выражения, вне зависимости от расстояния между ними. Это значение по умолчанию.

<match_order>
Определяет, должны ли поисковые выражения располагаться в указанном порядке для возврата в поисковом запросе. При указании <match_order> необходимо также указать <maximum_distance>.

<match_order> может принимать одно из следующих значений:

TRUE
Налагает ограничение, по которому выражения должны находиться в заданном порядке. Например, NEAR(A,B) найдет только A ... B.

FALSE
Указанный порядок не учитывается. Например, NEAR(A,B) может соответствовать как A ... B, так и B ... A.

Это значение по умолчанию.

Например, следующее выражение с учетом расположения ищет слова «Monday», «Tuesday» и «Wednesday» в заданном порядке вне зависимости от расстояния между ними:

CONTAINS(column_name, 'NEAR ((Monday, Tuesday, Wednesday), MAX, TRUE)')  

Дополнительные сведения об использовании похожих словах см. в разделе Поиск слов близких к другим с использованием оператора NEAR.

<weighted_term>
Указывает на то, что совпадающие строки (возвращенные запросом) соответствуют списку слов и фраз, каждому из которых при необходимости дано взвешенное значение.

ISABOUT
Указывает ключевое слово <weighted_term>.

WEIGHT(weight_value)
Указывает взвешенное значение, которое может принимать значение от 0,0 до 1,0. Каждый компонент в <weighted_term> может содержать weight_value. weight_value — это способ изменения того, как различные части запроса влияют на ранжирующее значение, назначенное каждой строке, удовлетворяющей условию запроса. Параметр WEIGHT не влияет на результаты запросов CONTAINS, но влияет на ранг в запросах CONTAINSTABLE.

Примечание.

В качестве десятичного разделителя всегда используется точка, независимо от кода локали операционной системы.

{ AND | & } | { AND NOT | &! } | { OR | | }
Задает логическую операцию между двумя условиями поиска на вхождение.

{ AND | & }
Указывает на то, что для совпадения оба условия поиска на вхождение должны быть удовлетворены. Символ амперсанда (&) может быть использован вместо ключевого слова AND для представления оператора AND.

{ AND NOT | &! }
Указывает на то, что для совпадения второе условие поиска на вхождение не должно быть удовлетворено. Символ амперсанда с последующим восклицательным знаком (&!) может быть использован вместо ключевого слова AND NOT для представления оператора AND NOT.

{ OR | | }
Указывает на то, что для совпадения любое из условий поиска на вхождение должно быть удовлетворено. Символ черты (|) может быть использован вместо ключевого слова OR для представления оператора OR.

Если аргумент <contains_search_condition> содержит группы в круглых скобках, эти группы вычисляются в первую очередь. После вычисления групп, заключенных в скобки, эти правила применяются при использовании следующих логических операторов с условиями поиска на вхождение.

  • NOT применяется перед AND.

  • NOT может стоять только после AND, как в AND NOT. Оператор OR NOT недопустим. NOT не может быть указано перед первым условием. Например, условие CONTAINS (mycolumn, 'NOT "phrase_to_search_for" ' ) недопустимо.

  • AND применяется перед OR.

  • Логические операторы одного типа (AND, OR) являются ассоциативными, и поэтому они могут быть применены в любом порядке.

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

Общие замечания

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

Полнотекстовые предикаты не допускаются в предложении OUTPUT, если уровень совместимости базы данных установлен в значение 100.

Запрос к удаленному серверу

Четырехкомпонентное имя может использоваться в предикате CONTAINS или FREETEXT для запроса по столбцам полнотекстового индекса целевых таблиц на связанном сервере. Чтобы подготовить удаленный сервер к приему полнотекстовых запросов, сначала необходимо создать полнотекстовые индексы для целевых таблиц и столбцов на удаленном сервере, а затем добавить удаленный сервер в качестве связанного сервера.

В отличие от полнотекстового поиска предикат LIKETransact-SQL работает только с комбинациями символов. Кроме того, предикат LIKE нельзя использовать в запросах к форматированным двоичным данным. Более того, запрос с предикатом LIKE к большому количеству неструктурированных текстовых данных выполняется гораздо медленнее, чем эквивалентный полнотекстовый запрос к тем же данным. Выполнение запроса LIKE к миллионам строк текстовых данных может занять несколько минут, в то время как полнотекстовый запрос к тем же данным занимает всего несколько секунд или даже меньше, в зависимости от количества и размера возвращаемых строк. Еще одно соображение состоит в том, что LIKE выполняет лишь простое сканирование по шаблону для всей таблицы. В то же время полнотекстовый запрос производится с учетом языка, применением определенных преобразований как при индексировании, так и при выполнении запроса. Например, выполняется фильтрация стоп-слов, расширение тезауруса и добавление флексий. Такие преобразования улучшают показатели повторного вызова и конечный рейтинг результатов полнотекстовых запросов.

Можно выполнить запрос к нескольким столбцам, задав список столбцов, в которых будет проводиться поиск. Столбцы должны быть из той же таблицы.

Например, следующий запрос CONTAINS ищет термин Red в Name таблице примера базы данных AdventureWorks2022 и Color столбцы Production.Product .

Use AdventureWorks2022;  
GO  
SELECT Name, Color   
FROM Production.Product  
WHERE CONTAINS((Name, Color), 'Red');  

Примеры

А. Использование CONTAINS с <simple_term>

В следующем примере выполняется поиск всех продуктов с ценой $80.99 , которые содержат слово Mountain.

USE AdventureWorks2022;  
GO  
SELECT Name, ListPrice  
FROM Production.Product  
WHERE ListPrice = 80.99  
   AND CONTAINS(Name, 'Mountain');  
GO  

B. Использование CONTAINS и фразы с <simple_term>

В следующем примере возвращаются все товары, которые содержат фразу Mountain или Road.

USE AdventureWorks2022;  
GO  
SELECT Name  
FROM Production.Product  
WHERE CONTAINS(Name, ' Mountain OR Road ')  
GO  

C. Использование CONTAINS с <prefix_term>

Следующий пример возвращает все имена товаров, содержащие по крайней мере одно слово, начинающееся с префикса «chain» в столбце Name.

USE AdventureWorks2022;  
GO  
SELECT Name  
FROM Production.Product  
WHERE CONTAINS(Name, ' "Chain*" ');  
GO  

D. Использование CONTAINS и OR с <prefix_term>

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

USE AdventureWorks2022;  
GO  
SELECT Name  
FROM Production.Product  
WHERE CONTAINS(Name, '"chain*" OR "full*"');  
GO  

Е. Использование CONTAINS с <proximity_term>

Область применения: SQL Server 2012 (11.x) и более поздних версий.

В следующем примере производится поиск в таблице Production.ProductReview всех комментариев, содержащих слово bike, на расстоянии до 10 выражений от слова control и в заданном порядке (то есть слово "bike" должно предшествовать слову "control").

USE AdventureWorks2022;  
GO  
SELECT Comments  
FROM Production.ProductReview  
WHERE CONTAINS(Comments , 'NEAR((bike,control), 10, TRUE)');  
GO  

F. Использование CONTAINS с <generation_term>

В следующем примере выполняется поиск всех товаров с формами слова ride: riding, ridden и т. д.

USE AdventureWorks2022;  
GO  
SELECT Description  
FROM Production.ProductDescription  
WHERE CONTAINS(Description, ' FORMSOF (INFLECTIONAL, ride) ');  
GO  

G. Использование CONTAINS с <weighted_term>

В следующем примере выполняется поиск всех названий продуктов, содержащих слова performance, comfortable или smooth, при этом для каждого слова задается определенный вес.

USE AdventureWorks2022;  
GO  
SELECT Description  
FROM Production.ProductDescription  
WHERE CONTAINS(Description, 'ISABOUT (performance weight (.8),   
comfortable weight (.4), smooth weight (.2) )' );  
GO  

H. Использование CONTAINS с переменными

Нижеприведенные примеры используют переменную вместо конкретного термина для поиска.

USE AdventureWorks2022;  
GO  
DECLARE @SearchWord NVARCHAR(30)  
SET @SearchWord = N'Performance'  
SELECT Description   
FROM Production.ProductDescription   
WHERE CONTAINS(Description, @SearchWord);  
GO  

I. Использование CONTAINS с логическим оператором (AND)

В следующем примере используется таблица ProductDescription базы данных AdventureWorks2022 . Запрос использует предикат CONTAINS для поиска описаний, в которых идентификатор описания не равен 5, а описание содержит слова Aluminum и spindle. Условие поиска использует логический оператор AND.

USE AdventureWorks2022;  
GO  
SELECT Description  
FROM Production.ProductDescription  
WHERE ProductDescriptionID <> 5 AND  
   CONTAINS(Description, 'Aluminum AND spindle');  
GO  

J. Использование CONTAINS для проверки вставки строки

В следующем примере предикат CONTAINS используется во вложенном запросе SELECT. Используя базу данных AdventureWorks2022, запрос получает значение комментария из всех комментариев в таблице ProductReview для конкретного велосипеда. Условие поиска использует логический оператор AND.

USE AdventureWorks2022;  
GO  
INSERT INTO Production.ProductReview   
  (ProductID, ReviewerName, EmailAddress, Rating, Comments)   
VALUES  
  (780, 'John Smith', 'john@fourthcoffee.com', 5,   
'The Mountain-200 Silver from AdventureWorks2008 Cycles meets and exceeds expectations. I enjoyed the smooth ride down the roads of Redmond');  
  
-- Given the full-text catalog for these tables is Adv_ft_ctlg,   
-- with change_tracking on so that the full-text indexes are updated automatically.  
WAITFOR DELAY '00:00:30';     
-- Wait 30 seconds to make sure that the full-text index gets updated.  
  
SELECT r.Comments, p.Name  
FROM Production.ProductReview AS r  
JOIN Production.Product AS p   
    ON r.ProductID = p.ProductID  
    AND r.ProductID = (SELECT ProductID  
FROM Production.ProductReview  
WHERE CONTAINS (Comments,   
    ' AdventureWorks2008 AND   
    Redmond AND   
    "Mountain-200 Silver" '));  
GO  

K. Запрос по свойству документа

Область применения: SQL Server 2012 (11.x) и более поздних версий.

Следующий запрос выполняет поиск по индексированному свойству Title в столбце Document таблицы Production.Document. Запрос возвращает только те документы, у которых свойство Title содержит строку Maintenance или Repair.

Примечание.

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

Use AdventureWorks2022;  
GO  
SELECT Document 
FROM Production.Document  
WHERE CONTAINS(PROPERTY(Document,'Title'), 'Maintenance OR Repair');  
GO  

См. также

Начало работы с компонентом Full-Text Search
Создание и управление полнотекстовыми каталогами
CREATE FULLTEXT CATALOG (Transact-SQL)
CREATE FULLTEXT INDEX (Transact-SQL)
Создание и управление полнотекстовыми индексами
Запросы с полнотекстовым поиском
CONTAINSTABLE (Transact-SQL)
FREETEXT (Transact-SQL)
FREETEXTTABLE (Transact-SQL)
Запросы с полнотекстовым поиском
Компонент Full-text Search
Создание запросов полнотекстового поиска (визуальные инструменты для баз данных)
WHERE (Transact-SQL)
Поиск свойств документа с использованием списков свойств поиска