Skip to content

Установка полнотекстового поиска с помощью T-SQL

Пересказ статьи Steve Jones. Setup Full-Text using T-SQL


Предыдущая статья была посвящена установке полнотекстового поиска (FTS) и индексов в SSMS. Здесь рассматривается эквивалент на T-SQL.



Все, что делается в SSMS, использует T-SQL под капотом. Зачастую вы можете получить код из диалога в SSMS, и использовать его для выполнения повторных операций. Но не для FTS. Когда вы подходите к концу работы мастера, вы не увидите кнопки "Script".



Её нет также и на других экранах мастера. Это упущение (и баг) в SSMS, как я считаю.

В любом случае нам нужно сделать следующие вещи:

  • Создать каталог.

  • Создать полнотекстовый индекс.

  • Наполнить индекс.


Это мы и будем делать.

Создать каталог


Каталог FTS - это логическая группа полнотекстовых индексов. Тут вы решаете, где хранить индексы, поскольку вы можете выбрать для них файловую группу. Однако после SQL Server 2008 решение о хранении (путь или файловая группа) не имеют никакого эффекта.

Теперь мы действительно это выполним:

CREATE FULLTEXT CATALOG name

Мы можем добавить чувствительность к акценту или настройки по умолчанию (или владельца), но реально мы здесь по большей части просто выбираем имя. Я выполню такой запрос:

CREATE FULLTEXT CATALOG FTSCat

Это даст мне место для размещения индексов. Я могу создать множество каталогов, если это необходимо.

Создание полнотекстовых индексов


На следующем шаге создается индекс. Базовый синтаксис использует CREATE FULLTEXT INDEX DDL с указанием таблицы и столбца. Чтобы это сделать нам необходим PK на таблице, поэтому проверьте, что ваша таблица имеет первичный ключ.

Мы можем добавить некоторые опции для языка, сбора статистической семантики и параметров наполнения. Все эти опции задокументированы. Чтобы создать базовый индекс, который вы можете использовать, я проделаю следующее. Во-первых, вот моя таблица.

CREATE TABLE dbo.FTS2
( myid INT NOT NULL CONSTRAINT FTS2PK PRIMARY KEY
, Val VARCHAR(2000));
GO

Теперь создадим индекс. Я хочу проиндексировать столбец val в этой таблице. Я буду использовать следующий оператор:

CREATE FULLTEXT INDEX ON dbo.FTS2(Val) KEY INDEX FTS2PK ON FTSCat

В этом операторе указывается таблица и перечисляются столбцы в скобках, как и в любом другом индексе. Мне нужно обеспечить уникальный индекс для отслеживания строк, что и дает PK. Я также указываю каталог, в котором будет храниться этот индекс.

При выполнении этого оператора индекс будет создан. Он также наполняется по умолчанию, что означает, что я могу использовать поисковые запросы, содержащие функцию CONTAINS().

Наполнение индексов


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

Чтобы сделать это, можно для начала использовать ALTER INDEX. Это просто с командой START FULL POPULATION (или UPDATE POPULATION).

ALTER FULLTEXT INDEX ON dbo.FTS2 START FULL POPULATION

Это все.

Выводы


Этот пост в целом повторяет предыдущий, но с непосредственным использованием T-SQL вместо GUI. Всегда полезно знать оба способа выполнения чего-либо, особенно тогда, когда GUI не предоставляет всех необходимых опций.
Категории: T-SQL

Обратные ссылки

Нет обратных ссылок

Комментарии

Показывать комментарии Как список | Древовидной структурой

Нет комментариев.

Автор не разрешил комментировать эту запись

Добавить комментарий

Enclosing asterisks marks text as bold (*word*), underscore are made via _word_.
Standard emoticons like :-) and ;-) are converted to images.

To prevent automated Bots from commentspamming, please enter the string you see in the image below in the appropriate input box. Your comment will only be submitted if the strings match. Please ensure that your browser supports and accepts cookies, or your comment cannot be verified correctly.
CAPTCHA

Form options

Добавленные комментарии должны будут пройти модерацию прежде, чем будут показаны.