Создание полнотекстовых запросов. CONTAINS и CONTAINSTABLE. Синонимы искомого термина, найденные с помощью поиска в тезаурусе

Страницы работы

Фрагмент текста работы

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

        ♦    грамматические формы заданного глагола;

        ♦    синонимы искомого термина, найденные с помощью поиска в тезаурусе;

♦    результаты совпадения данных, хранящихся, например, в столбце типаnvarchar(max).

3.1. CONTAINS и CONTAINSTABLE

Предикат CONTAINS позволяет писать запросы, возвращающие точные совпадения с входными данными и нечеткие (менее точные) (fuzzy) совпадения с входным элементом.

У функции CONTAINSTABLE те же условия поиска, что и у предиката, но она также позволяет возвращать в результирующем наборе степень соответствия (relevance value) (RANK) и полнотекстовый ключ (KEY) для каждой строки.

С помощью этих команд можно искать следующие элементы:

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

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

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

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

•  слова, которое является синонимом другого слова, с использованием тезауруса (например, английское слово «metal» может иметь синоним «aluminum» и «steel»).

Аргументы предиката CONTAINS

У предиката CONTAINS два аргумента – Includedcolumn и Searchcondition.

1.  Аргумент Includedcolumn может содержать любой из следующих компонентов:

•  column_name – имя столбца, если хотите искать только в одном столбце;

•  column_list – имена столбцов, если хотите искать в нескольких столбцах;

•  (звездочка) – означает, что столбцы таблицы в предложении FROM, допускающие полнотекстовый поиск, должны быть включены в него;

•  LANGUAGE – язык запроса может быть одним из идентификаторов lcid из таблицы syslanguages.

 

2.  Аргумент Searchcondition может содержать следующие компоненты:

•  simple_term (простое выражение) – слово или фраза (несколько слов с пробелами между ними в двойных кавычках); 

•  prefix_term (префиксное выражение) – слово или фраза в двойных кавычках, за последним словом должна следовать звѐздочка;

•  generation_term(производное выражение) – задайте ключевое слово INFLECTIONAL (поиск форм глаголов или существительных)илиTHESAURUS (совпадение в тезаурусе слова или фразы) для определения зависящей от языка подстановки

•  proximity_term(выражение с учетом расположения) – задавайте его с оператором близости NEAR, чтобы указать, что слово слева от должно быть расположено недалеко от элемента слева;

•  weighted_term(взвешенное выражение) – задавайте его с ключевым словом ISABOUT. Кроме того, используется ключевое слово WEIGHT и число в диапазоне от 0.0 до 1.0 для указания относительного веса каждого компонента во взвешенном выражении. Имеет смысл использовать только совместно с функцией CONTAINSTABLE;

•  логическиеоператоры– AND (или &), ANDNOT (или &!), OR (или !).

Аргументы функции CONTAINSTABLE

Функция CONTAINSTABLE использует такие же условия поиска, как и предикат CONTAINS, но есть следующие дополнительные аргументы:

1.  table– имя таблицы, для которой включен полнотекстовый поиск;

2.  top_n_by_rank – задает возврат только указанного числа строк с наибольшими рангами. Ограничив с помощью этого параметра результаты только значимыми строками, можно повысить производительность запроса.

3.2. Примеры использования CONTAINS и CONTAINSTABLE

Поиск конкретного слова или фразы (простых термов) 

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

 

В предикате CONTAINS первым параметром является имя столбца

Похожие материалы

Информация о работе