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 заполняет индекс полностью, после того как он был создан.

Разрешения

Пользователь должен обладать разрешением 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 г.

Новое содержимое
  • Уточнено, что полнотекстовые индексы могут также применяться к индексированным представлениям.
  • Добавлена ссылка на раздел «Фильтры», при переходе по которой можно получить сведения о предложении TYPE COLUMN.