CREATE FULLTEXT INDEX (Transact-SQL)
Изменения: 12 декабря 2006 г.
Создает полнотекстовый индекс по одному или нескольким столбцам таблицы либо индексированного представления в базе данных. У таблицы или индексированного представления может быть только один полнотекстовый индекс. По умолчанию при создании базы данных в ней разрешается полнотекстовый поиск.
Синтаксические обозначения в Transact-SQL
Синтаксис
CREATE FULLTEXT INDEX ON table_name
[(column_name [TYPE COLUMN type_column_name]
[LANGUAGE language_term] [,...n])]
KEY INDEX index_name
[ON fulltext_catalog_name]
[WITH
{CHANGE_TRACKING {MANUAL | AUTO | OFF [, NO POPULATION]}}
]
Аргументы
- table_name
Имя таблицы или индексированного представления, содержащего столбец или столбцы, включенные в полнотекстовый индекс.
- column_name
Имя столбца или столбцов, включенных в полнотекстовый индекс. В индекс для полнотекстового поиска можно включать только столбцы типов char, varchar, nchar, nvarchar, text, ntext, image, xml и varbinary.
TYPE COLUMN type_column_name
Имя столбца таблицы table_name, содержащего тип документа столбца column_name.Аргумент type_column_name должен иметь тип char, nchar, varchar или nvarchar. Аргумент type_column_name следует указывать, только если столбцы в аргументе column_name имеют тип varbinary(max) или image. В противном случае SQL Server возвращает ошибку.
Дополнительные сведения см. в разделе Фильтры полнотекстового поиска.
LANGUAGE language_term
Язык данных, хранящихся в столбце column_name.Аргумент language_term необязателен и может задаваться как строковое, целочисленное или шестнадцатеричное значение, соответствующее коду данного языка (LCID). Если аргумент language_term указан, представленный им язык будет использоваться при индексировании данных, хранящихся в столбцах типов char, nchar, varchar, nvarchar, text и ntext. Этот язык используется в запросах по умолчанию, если аргумент language_term не задан как часть полнотекстового предиката, характеризующего столбец. Если не задано никакого значения, используется язык экземпляра SQL Server, установленный по умолчанию.
Если язык неизвестен или в столбце column_name должны быть сохранены данные на нескольких языках (и этот столбец не принадлежит к типам данных BLOB или XML), следует использовать нейтральный язык (0x0). Дополнительные сведения см. в разделе Поддержка многоязычных функций в компоненте Full-Text Search.
Для доступа к сведениям об установленном по умолчанию для полнотекстового поиска языке экземпляра Microsoft SQL Server используйте хранимую процедуру sp_configure. Дополнительные сведения см. в разделах Хранимая процедура sp_configure (Transact-SQL) и Параметр default full-text language.
Если аргумент language_term указан как строка, он соответствует значению столбца alias в системной таблице syslanguages. Строка должна быть заключена в одинарные кавычки, например 'language_term'. Если аргумент language_term указан как целое число, он представляет собой фактический код языка, идентифицирующий данный язык. Если аргумент language_term указан как шестнадцатеричное значение, он записывается как 0x, за которым следует шестнадцатеричное значение кода языка. Длина шестнадцатеричного значения не должна превышать восьми цифр, включая ведущие нули.
Если значение указано в двухбайтовой кодировке (DBCS), SQL Server преобразует его в Юникод.
Для указанного аргументом language_term языка должны быть включены ресурсы, такие как средства разбиения по словам и парадигматические модули. Если такие ресурсы не поддерживают указанный язык, SQL Server возвращает ошибку.
Для столбцов с типами, отличными от BLOB и XML, содержащих текстовые данные на нескольких языках, или в случаях, когда язык хранящегося в столбце текста неизвестен, используйте нейтральный (0x0) языковый ресурс. Для документов, хранящихся в столбцах типов XML или BLOB, во время индексирования будет использоваться внутренняя языковая кодировка документа. Например, в XML-столбцах язык идентифицируется атрибутом xml:lang XML-документа. Во время запроса значение, ранее указанное для аргумента language_term, становится используемым по умолчанию языком в полнотекстовых индексах, если аргумент language_term не указан как часть полнотекстового запроса.
- ,... n
Указывает, что для полнотекстового индексирования можно задать несколько столбцов. Если задаются несколько столбцов, их следует разделять запятыми.
- KEY INDEX index_name
Имя индекса уникальных ключей таблицы table_name. Индекс KEY INDEX должен быть уникальным столбцом с одним ключом, не допускающим значения NULL. В качестве уникального ключа для полнотекстового поиска выбирайте наименьший индекс уникальных ключей. Для наилучшей производительности рекомендуется использовать кластеризованный (CLUSTERED) индекс.
ON fulltext_catalog_name
Полнотекстовый каталог, используемый для полнотекстового индекса. Этот каталог уже должен существовать в базе данных. Данное предложение необязательно. Если оно не указано, используется каталог по умолчанию. Если каталога по умолчанию не существует, SQL Server возвращает ошибку.Файловая группа каталога fulltext_catalog_name или, если каталог не указан, используемый по умолчанию полнотекстовый каталог не должен быть доступен только для чтения (READONLY) или находиться в автономном режиме (OFFLINE). В противном случае SQL Server вернет ошибку.
WITH CHANGE_TRACKING {MANUAL | AUTO | OFF [ , NO POPULATION]}
Указывает, поддерживается ли в SQL Server список всех изменений индексируемых данных. Изменения данных через WRITETEXT и UPDATETEXT не фиксируются при отслеживании изменений.- MANUAL
Указывает, что журнал отслеживания изменений будет распространяться либо по расписанию с помощью агента SQL Server, либо вручную пользователем.
AUTO
Указывает, что SQL Server автоматически обновляет полнотекстовый индекс по мере изменения данных в связанных таблицах. Аргумент AUTO используется по умолчанию.Примечание Хотя изменения могут распространяться автоматически, они могут не отображаться немедленно в полнотекстовом индексе. Дополнительные сведения о свойствах, используемых для мониторинга процесса полнотекстового индексирования и диагностики проблем полнотекстового индексирования, см. в разделе Получение значений свойств полнотекстового поиска функциями Transact-SQL.
OFF [ , NO POPULATION]
Указывает, что в SQL Server не хранится список изменений индексированных данных.Аргумент NO POPULATION может использоваться только в том случае, если аргументу CHANGE_TRACKING присвоено значение OFF. Если указан аргумент NO POPULATION, SQL Server не заполняет индекс после его создания. Индекс заполняется только после выполнения пользователем команды ALTER FULLTEXT INDEX с предложением START FULL или INCREMENTAL POPULATION. Если аргумент NO POPULATION не указан, SQL Server заполняет индекс полностью, после того как он был создан.
- MANUAL
Разрешения
Пользователь должен обладать разрешением REFERENCES на полнотекстовый каталог и разрешением ALTER на таблицу представления либо являться членом фиксированной серверной роли sysadmin или фиксированных ролей базы данных db_owner или db_ddladmin.
Примеры
На данном примере показано, как создается полнотекстовый индекс таблицы HumanResources.JobCandidate
.
USE AdventureWorks;
GO
CREATE UNIQUE INDEX ui_ukJobCand ON HumanResources.JobCandidate(JobCandidateID);
CREATE FULLTEXT CATALOG ft AS DEFAULT;
CREATE FULLTEXT INDEX ON HumanResources.JobCandidate(Resume) KEY INDEX ui_ukJobCand;
GO
См. также
Справочник
ALTER FULLTEXT INDEX (Transact-SQL)
DROP FULLTEXT INDEX (Transact-SQL)
Инструкция GRANT (Transact-SQL)
Другие ресурсы
Справка и поддержка
Получение помощи по SQL Server 2005
Журнал изменений
Версия | Журнал |
---|---|
12 декабря 2006 г. |
|