Skip to content

Установка полнотекстового индекса

Пересказ статьи Steve Jones. Setting up a Full Text Index


Недавно мне встретился вопрос относительно полнотекстового поиска. Я знал ответ, но, чтобы протестировать некий код, я переустановил индекс, что заняло порядка минуты, и я решил написать об этом. Эта публикация посвящена основам установки индекса.

Установка


Полнотекстовый индекс предоставляет вам немного больше возможностей поиска, чем стандартный T-SQL с LIKE или подстановочными знаками. Он полезен для работы с большими объемами текста, содержащего сотни и тысячи слов.

Для начала вам нужно знать несколько вещей. Во-первых, эта система в современном SQL Server (2008+) устанавливается на всех экземплярах. Вам не нужно включать FTS (полнотекстовый поиск), как бы вы это сделали для таблиц In-Memory OLTP или FILESTREAM.

Затем вам необходим каталог для индексов FTS, который является логическим контейнером.

Затем таблица с данными.

Наконец, вы создаете индекс. Здесь я рассмотрю SSMS и графический интерфейс. В другой статье я рассмотрю непосредственно T-SQL.

Использование SSMS


Быстрый способ начать - это щелкнуть правой кнопкой на вашей таблице. Как отмечалось, база данных уже включена для FTS. В контекстном меню есть раздел Full-Text index, и в нем выбор "define" (определить), как показано ниже.



Щелкните здесь, и запустится мастер. На появившемся начальном экране вы можете щелкнуть next (далее).



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



Требуется выбрать столбцы, которые вы хотите проиндексировать. У меня есть только один, но вы можете выбрать любой или несколько столбцов - символьных или изображений. Изображением могут считаться бинарные столбцы, которые содержат что-то типа документа Word.

Для извлечения ключевых фраз из документов используется статистическая семантика (statistical semantics). Для базового полнотекстового поиска символьных данных вы можете её не использовать, но если вы разыскиваете что-то типа PDF, Word и т.п., вы можете её включить.



Если вы хотите отслеживать изменения при изменении данных и обновлять индекс, выберите auto (автоматически) или manual (вручную).



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



Следующий шаг - это заполнения расписания. Здесь вы решаете когда обновлять индекс. Вы можете позволить системе выполнять обновление, когда она обнаруживает изменения, если данных не слишком много, или вы можете составить расписание для обновления. Большие индексы с множеством данных могут занять время и потреблять ресурсы, поэтому для некоторых экземпляров требуется установить расписание выполнения в часы низкой рабочей нагрузки.

Я обычно игнорирую это при демонстрации.



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



Для моей небольшой демонстрационной таблицы это выполняется быстро.



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



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

CREATE TABLE FTSTest (
myid INT NOT NULL IDENTITY(1,1) CONSTRAINT FTSTestPK PRIMARY KEY
, mydata VARCHAR(MAX)
)
GO
INSERT dbo.FTSTest (mydata)
VALUES ('Now is the time for all good men to come to the aid of their country'),
('there are a number of men who are good in the world'),
('good for men that help others'),
('If there are men who others might consider good, we should support them'),
('Good is a concept that is sometimes hard for men to comprehend'),
('Good is a concept that is sometimes hard for anyone to comprehend')
GO

Это быстрая настройка. Я рассмотрю запросы и настройку T-SQL в следующем посте.

Trackbacks

No Trackbacks

Comments

Display comments as Linear | Threaded

No comments

The author does not allow comments to this entry

Add Comment

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

Submitted comments will be subject to moderation before being displayed.