Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения: SQL Server
База данных SQL Azure Управляемый экземпляр SQL Azure
По умолчанию для баз данных SQL Server включен полнотекстовый поиск. Однако перед выполнением полнотекстовых запросов нужно создать полнотекстовый каталог и полнотекстовый индекс для таблиц или индексированных представлений, по которым требуется выполнить поиск.
Настройка полнотекстового поиска в два шага
Чтобы настроить полнотекстовый поиск, обычно требуется выполнить два основных шага:
- Создание полнотекстового каталога.
- Создание полнотекстового индекса по таблицам или индексированному представлению, где требуется произвести поиск.
Полнотекстовый индекс должен принадлежать к полнотекстовому каталогу. Можно либо создать отдельный текстовый каталог для каждого полнотекстового индекса, либо связать с одним каталогом несколько полнотекстовых индексов. Полнотекстовый каталог является виртуальным объектом и не входит в файловую группу. Каталог — это логическое понятие, которое ссылается на группу полнотекстовых индексов.
Примечание.
Выполнение этих действий предполагает, что при установке SQL Server были установлены дополнительные компоненты полнотекстового поиска. В противном случае, чтобы их добавить, программу установки SQL Server необходимо будет перезапустить.
Настройка полнотекстового поиска с помощью мастера
Чтобы настроить полнотекстовый поиск с помощью мастера, ознакомьтесь со статьей Use the Full-Text Indexing Wizard (Использование мастера полнотекстового индексирования).
Настройка полнотекстового поиска с помощью Transact-SQL
В следующем примере из двух частей в образце базы данных AdventureWorks создается полнотекстовый каталог с именем AdvWksDocFTCat, затем создается полнотекстовый индекс в таблице Document образца базы данных. Эта инструкция создает полнотекстовый каталог в папке по умолчанию, указанной во время установки SQL Server, Папка с именем AdvWksDocFTCat находится в каталоге по умолчанию.
Для создания полнотекстового каталога
AdvWksDocFTCatв примере используется инструкция CREATE FULLTEXT CATALOG :USE AdventureWorks; GO CREATE FULLTEXT CATALOG AdvWksDocFTCat;Дополнительные сведения см. в статье Создание полнотекстовых каталогов и управление ими.
Однако перед созданием полнотекстового индекса для таблицы Document следует убедиться, что в ней определен уникальный индекс с одним столбцом, не допускающий значений NULL. Следующая инструкция CREATE INDEX создает уникальный индекс
ui_ukDocдля столбца DocumentID таблицы Document:CREATE UNIQUE INDEX ui_ukDoc ON Production.Document(DocumentNode);Удалите существующий полнотекстовый индекс в таблице
Documentс помощью следующей инструкции DROP FULLTEXT INDEX.DROP FULLTEXT INDEX ON Production.Document GOПосле создания уникального ключа можно создать полнотекстовый индекс для таблицы
Documentс помощью следующей инструкции CREATE FULLTEXT INDEX .CREATE FULLTEXT INDEX ON Production.Document ( Document --Full-text index column name TYPE COLUMN FileExtension --Name of column that contains file type information Language 2057 --2057 is the LCID for British English ) KEY INDEX ui_ukDoc ON AdvWksDocFTCat --Unique index WITH CHANGE_TRACKING AUTO --Population type; GOСтолбец TYPE COLUMN, определенный в этом примере, задает столбец типов в таблице, которая в каждой строке столбца «Document» (имеющего двоичный тип) содержит тип документа. Столбец типа хранит заданное пользователем расширение файла документа — DOC, XLS и т. д. — в данной строке. Движок полнотекстового поиска использует расширение файла в данной строке для вызова соответствующего фильтра, используемого для синтаксического анализа данных в этой строке. После того как фильтр выполнит синтаксический анализ двоичных данных в строке, указанное средство разбиения по словам выполнит синтаксический анализ содержимого. (В этом примере используется средство разбиения слов для британского английского языка.) Дополнительные сведения см. в разделе "Настройка и управление фильтрами для поиска".
Дополнительные сведения см. в статье Create and Manage Full-Text Indexes (Создание полнотекстовых индексов и управление ими).
Выбор параметров полнотекстового индекса
Выбор языка
Сведения о выборе языка столбца см. в разделе Выбор языка при создании полнотекстового индекса.
Выбор файловой группы
Процесс создания полнотекстового индекса может сильно нагружать подсистему ввода-вывода. В итоге это включает в себя чтение данных из SQL Server и затем распространение отфильтрованных данных в индекс полного текста. Рекомендуется размещать полнотекстовый индекс в той файловой группе базы данных, которая обеспечит максимальную производительность операций ввода-вывода, либо разместить полнотекстовые индексы в другой файловой группе на другом томе.
Выбор полнотекстового каталога
Таблицы с одинаковыми характеристиками обновления (например, небольшим числом изменений, в противоположность большому их количеству или частым изменением таблиц в определенное время дня) рекомендуется связывать с одним полнотекстовым каталогом. Если настроить расписание заполнения полнотекстового каталога, то полнотекстовые индексы будут синхронизироваться с таблицами, почти не влияя на использование ресурсов сервером баз данных в течение периодов высокой активности.
Ознакомьтесь со следующими рекомендациями:
Если индексируется таблица с миллионами строк, назначьте ее отдельному полнотекстовому каталогу.
Учитывайте количество изменений в таблице, в которой выполняется полнотекстовое индексирование, а также общее количество строк в ней. Если общее число изменяемых строк вместе с количеством строк в таблице на момент последнего полнотекстового заполнения исчисляется миллионами, назначьте эту таблицу отдельному полнотекстовому каталогу.
Сопоставление уникального индекса
Для полнотекстового уникального ключа всегда следует выбирать наименьший по размеру уникальный индекс. (4-байтовый, целочисленный индекс является оптимальным.) Это значительно сокращает ресурсы, необходимые Поиск (Майкрософт) службе в файловой системе. Если первичный ключ велик (более 100 байт), попробуйте выбрать в таблице другой уникальный индекс (или создайте другой уникальный индекс) в качестве полнотекстового уникального ключа. В противном случае, если размер уникального полнотекстового ключа превышает максимально разрешенный размер (900 байт), полнотекстовое заполнение выполнить не удастся.
Сопоставление списка стоп-слов
Список стоп-слов — это список стоп-слов, также известных как шумовые слова. Список стоп-слов связывается с каждым полнотекстовым индексом. Слова в данном списке применяются к полнотекстовым запросам в данном индексе. По умолчанию новый полнотекстовый индекс связывается с системным списком стоп-слов. Вы также можете создать и использовать свой собственный стоп-лист.
Например, следующая инструкция CREATE FULLTEXT STOPLIST Transact-SQL создает новый полнотекстовый список стоп-списков с именем myStoplist путем копирования из системного списка стоп-списков:
CREATE FULLTEXT STOPLIST myStoplist FROM SYSTEM STOPLIST;
GO
Следующая инструкция ALTER FULLTEXT STOPLIST Transact-SQL изменяет список стоп-списков с именем myStoplist , добавив слово en, сначала для испанского, а затем для французского:
ALTER FULLTEXT STOPLIST myStoplist ADD 'en' LANGUAGE 'Spanish';
ALTER FULLTEXT STOPLIST myStoplist ADD 'en' LANGUAGE 'French';
GO
Дополнительные сведения см. в разделе Настройка стоп-слов и списков стоп-слов для полнотекстового поиска и управление ими.
Обновление полнотекстового индекса
Как и обычные индексы SQL Server, полнотекстовые индексы можно автоматически обновлять при изменении данных в связанных таблицах. Это поведение принимается по умолчанию. Обновлять полнотекстовые индексы можно и вручную либо по заданному расписанию. Заполнение полнотекстового индекса может потребовать значительного времени и ресурсов, из-за чего обновление индекса обычно выполняется как асинхронный процесс в фоновом режиме, обновляющий полнотекстовый индекс после внесения изменений в базовую таблицу.
Для немедленного обновления полнотекстового индекса после каждого изменения в базовой таблице может также потребоваться большой объем ресурсов. Следовательно, если обновление, вставка или удаление выполняются часто, то производительность запросов может снизиться. В таком случае попробуйте выполнять обновления отслеживания изменений вручную по определенному расписанию. Это позволит обрабатывать больше изменений в определенные моменты времени, а не конкурировать за ресурсы с запросами.
Дополнительные сведения см. в статье Заполнение полнотекстовых индексов.
Следующие шаги
После настройки полнотекстового поиска SQL Server вы можете приступить к выполнению полнотекстовых запросов. Дополнительные сведения см. в статье Запрос с полнотекстовым поиском.