Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Область применения: SQL Server
База данных SQL Azure Управляемый экземпляр SQL Azure
Функция, используемая в предложении FROM инструкции Transact-SQL SELECT для выполнения полнотекстового поиска SQL Server на полнотекстовых индексированных столбцах, содержащих типы данных на основе символов. Эта функция возвращает таблицу с нулем, одной или несколькими строками для этих столбцов, содержащих значения, которые соответствуют значению, а не только точному слову текста в указанном freetext_string. Ссылки на функцию FREETEXTTABLE указываются так, как если бы это было имя обычной таблицы.
FREETEXTTABLE полезна для тех же типов совпадений, что и FREETEXT (Transact-SQL),
Запросы, использующие функцию FREETEXTTABLE, возвращают ранжирующие по релевантности значения (RANK) и полнотекстовый ключ (KEY) для каждой строки.
Примечание.
Сведения о формах полнотекстового поиска, поддерживаемых SQL Server, см. в статье "Запрос" с полнотекстовой поиском.
Соглашения о синтаксисе Transact-SQL
Синтаксис
FREETEXTTABLE (table , { column_name | (column_list) | * }
, 'freetext_string'
[ , LANGUAGE language_term ]
[ , top_n_by_rank ] )
Аргументы
table
Имя таблицы, помеченной как допускающая полнотекстовые запросы.
таблица или представлениемогут быть одним, двумя или трехкомпонентными именами объектов базы данных. При выполнении запроса к представлению задействуется только базовая таблица с полнотекстовым индексированием.
таблица не может указывать имя сервера и не может использоваться в запросах к связанным серверам.
column_name
Имя одного или нескольких столбцов с полнотекстовой индексацией в таблице, указанной в предложении FROM. Столбцы должны иметь тип char, varchar, nchar, nvarchar, text, ntext, image, xml, varbinary или varbinary(max).
column_list
Указывает, что можно задать несколько столбцов, разделенных запятыми.
column_list должен быть заключен в скобки. Если задан аргумент language_term, то у всех столбцов в column_list должен быть одинаковый язык.
*
Указывает, что все столбцы, которые были зарегистрированы для полнотекстового поиска, должны быть использованы для поиска строки, заданной аргументом freetext_string. Если language_term не указано, язык всех полнотекстовых индексированных столбцов в таблице должен быть одинаковым.
freetext_string
Искомый текст в столбце, определенном аргументом column_name. Допустимо вводить любой текст, включая слова, фразы или предложения. Соответствия формируются, если любой ключ или его формы найдены в полнотекстовом индексе.
В отличие от условия поиска CONTAINS, где И является ключевым словом, при использовании в freetext_string слово "и" считается шумным словом, или стоп-словом, и будет отменено.
Использование функций WEIGHT, FORMSOF, символов шаблонов, NEAR, а также других синтаксических элементов запрещено. freetext_string разбивается на слова, проходит процедуру вычленения корней и пропускается через тезаурус.
ЯЗЫК language_term
Язык, ресурсы которого будут использованы для разбиения по словам, выделения корня, проверки по тезаурусу и удаления стоп-слов в составе запроса. Этот аргумент не является обязательным и может быть строкой, целым числом или шестнадцатеричным значением, соответствующим идентификатору локали (LCID). Если аргумент language_term задан, то соответствующий язык будет применяться ко всем элементам условия поиска. Если значение не указано, то используется язык полнотекстового поиска, заданный для столбца.
Если в одном столбце хранятся документы на различных языках в виде больших двоичных объектов, то идентификатор локали заданного документа определяет, какой язык должен использоваться для индексирования его содержимого. Указание аргумента LANGUAGE language_term при запросе к такому столбцу может повысить вероятность хорошего соответствия.
Если аргумент language_term является строкой, он соответствует значению столбца alias в представлении совместимости sys.languages (Transact-SQ). Строка должна быть заключена в одиночные кавычки: 'language_term'. Если значением аргумента language_term является целое число, оно представляет собой действительный код языка. Если значение language_term задано в шестнадцатеричной форме, то после символов "0x" должна следовать шестнадцатеричная запись кода языка. Шестнадцатеричное значение не может иметь более восьми знаков, включая начальные нули.
Если значение находится в формате двойного байтового набора символов (DBCS), Microsoft SQL Server преобразует его в Юникод.
Если указанный язык является недопустимым или связанные с ним ресурсы не установлены, SQL Server возвращает сообщение об ошибке. Для использования нейтральных языковых ресурсов следует указать 0x0 в качестве значения аргумента language_term.
top_n_by_rank
Указывает, что возвращаются только совпадения с наибольшим рейтингом nв порядке убывания. Применяется только при указании целочисленного значения n. Если параметр top_n_by_rank скомбинирован с другими параметрами, то запрос может вернуть меньше строк, чем фактически соответствует всем предикатам.
top_n_by_rank позволяет повысить производительность запросов, вспоминая только наиболее релевантные хиты.
Замечания
Полнотекстовые предикаты и функции работают в одной таблице, что следует из наличия предиката FROM. Для поиска в нескольких таблицах используйте в предложении FROM соединенную таблицу, чтобы выполнять поиск в результирующем наборе, который получен в результате соединения нескольких таблиц.
Функция FREETEXTTABLE использует те же условия поиска, что и предикат FREETEXT.
Как и CONTAINSTABLE, возвращаемая таблица содержит столбцы с именем KEY и RANK, на которые ссылается запрос, чтобы получить соответствующие строки и использовать значения ранжирования строк.
Разрешения
Функция FREETEXTTABLE может быть задействована только пользователями с соответствующими правами доступа SELECT на указанную таблицу или ее ссылаемые столбцы.
Примеры
А. Простой пример
В следующем примере создается простая таблица двух столбцов, в которой перечислены 3 округа и цвета флагов. Он создает и заполняет полнотекстовый каталог и индекс в таблице. Затем демонстрируется синтаксис FREETEXTTABLE.
CREATE TABLE Flags (Country nvarchar(30) NOT NULL, FlagColors varchar(200));
CREATE UNIQUE CLUSTERED INDEX FlagKey ON Flags(Country);
INSERT Flags VALUES ('France', 'Blue and White and Red');
INSERT Flags VALUES ('Italy', 'Green and White and Red');
INSERT Flags VALUES ('Tanzania', 'Green and Yellow and Black and Yellow and Blue');
SELECT * FROM Flags;
GO
CREATE FULLTEXT CATALOG TestFTCat;
CREATE FULLTEXT INDEX ON Flags(FlagColors) KEY INDEX FlagKey ON TestFTCat;
GO
SELECT * FROM Flags;
SELECT * FROM FREETEXTTABLE (Flags, FlagColors, 'Blue');
SELECT * FROM FREETEXTTABLE (Flags, FlagColors, 'Yellow');
B. Использование функции FREETEXT в INNER JOIN
В следующем примере возвращается описание и ранг всех продуктов с описанием, соответствующим значению high level of performance.
USE AdventureWorks2022;
GO
SELECT FT_TBL.Description
,KEY_TBL.RANK
FROM Production.ProductDescription AS FT_TBL
INNER JOIN FREETEXTTABLE(Production.ProductDescription,
Description,
'high level of performance') AS KEY_TBL
ON FT_TBL.ProductDescriptionID = KEY_TBL.[KEY]
ORDER BY RANK DESC;
GO
В. Указание языка и соответствий с наивысшими ранжирующими значениями
Следующий пример идентичен и показывает использование LANGUAGEпараметров language_term и top_n_by_rank .
USE AdventureWorks2022;
GO
SELECT FT_TBL.Description
,KEY_TBL.RANK
FROM Production.ProductDescription AS FT_TBL
INNER JOIN FREETEXTTABLE(Production.ProductDescription,
Description,
'high level of performance',
LANGUAGE N'English', 2) AS KEY_TBL
ON FT_TBL.ProductDescriptionID = KEY_TBL.[KEY]
ORDER BY RANK DESC;
GO
Примечание.
Параметр LANGUAGE language_term не требуется использовать параметр top_n_by_rank .
См. также
Начало работы с компонентом Full-Text Search
Создание и управление полнотекстовыми каталогами
СОЗДАТЬ ПОЛНОТЕКСТОВЫЙ КАТАЛОГ (Transact-SQL)
СОЗДАТЬ ПОЛНОТЕКСТОВЫЙ ИНДЕКС (Transact-SQL)
Создание и управление полнотекстовыми индексами
Запросы с полнотекстовым поиском
Создание запросов полнотекстового поиска (визуальные инструменты для баз данных)
СОДЕРЖИТ (Transact-SQL)
CONTAINSTABLE (Transact-SQL)
СВОБОДНЫЙ ТЕКСТ (Transact-SQL)
Функции набора строк (Transact-SQL)
SELECT (Transact-SQL)
ГДЕ (Transact-SQL)
Параметр конфигурации сервера «precompute rank»
Сравнение функций в База данных SQL Azure и Управляемый экземпляр SQL Azure