Поделиться через


ALTER FULLTEXT INDEX (Transact-SQL)

Изменения: 12 декабря 2006 г.

Изменяет свойства полнотекстового индекса.

Значок ссылки на разделСинтаксические обозначения в Transact-SQL

Синтаксис

ALTER FULLTEXT INDEX ON table_name
   { ENABLE 
   | DISABLE
   | SET CHANGE_TRACKING { MANUAL | AUTO | OFF }
   | ADD ( column_name 
     [ TYPE COLUMN type_column_name ] 
     [ LANGUAGE language_term ] [,...n] )
     [ WITH NO POPULATION ]
   | DROP ( column_name [,...n] )
     [WITH NO POPULATION ] 
   | START { FULL | INCREMENTAL | UPDATE } POPULATION
   | { STOP | PAUSE | RESUME } POPULATION 
   }

Аргументы

  • table_name
    Имя таблицы, содержащей столбец или столбцы, включенные в полнотекстовый индекс. Указывать имена владельцев базы данных и таблицы не обязательно.
  • ENABLE | DISABLE
    Указывает Microsoft SQL Server, нужно ли собирать данные полнотекстового индекса для таблицы table_name. Значение ENABLE активирует полнотекстовый индекс, значение DISABLE отключает.

    Если полнотекстовый индекс отключен, метаданные полнотекстового индекса остаются в системных таблицах. Если состояние CHANGE_TRACKING включено (автоматическое или ручное обновление) когда полнотекстовый индекс отключен, то состояние индекса закрепляется, любое текущее сканирование останавливается, новые изменения в данных таблицы не отслеживаются и не вносятся в индекс. Полнотекстовый индекс таблицы table_name может быть реактивирован с помощью значения ENABLE.

  • SET CHANGE_TRACKING {MANUAL | AUTO | OFF}
    Указывает, нужно ли SQL Server вести список всех изменений в индексированных данных в полнотекстовом каталоге. Изменения данных, внесенные с помощью инструкций WRITETEXT и UPDATETEXT, не отражаются в полнотекстовом индексе и не отмечаются при отслеживании изменений.

    При изменении состояния CHANGE_TRACKING полнотекстового индекса нельзя устанавливать для файловой группы FILEGROUP, в которой находится таблица с полнотекстовым индексом, состояние OFFLINE или READONLY. В противном случае выполнение команды завершается неудачей и SQL Server возвращает ошибку.

  • MANUAL
    Определяет, что журнал отслеживания изменений будет распространяться или по расписанию, используя агент SQL Server, или вручную пользователем.
  • AUTO
    Указывает, что SQL Server автоматически обновляет полнотекстовый индекс при изменениях данных в связанных таблицах. Значение AUTO используется по умолчанию.
  • OFF
    Указывает, что SQL Server не будет вести списка изменений в индексированных данных.
  • ADD | DROP column_name
    Указывает столбцы, добавляемые или удаляемые из полнотекстового индекса. Столбец или столбцы должны быть типа char, varchar, nchar, nvarchar, text, ntext, image, xml или varbinary(max).

    Предложение DROP используется только для столбцов, ранее включенных для полнотекстового индексирования.

    Следует использовать параметры TYPE COLUMN и LANGUAGE с предложением ADD, чтобы назначить эти свойства для столбца column_name. После добавления столбца полнотекстовый индекс таблицы должен быть заполнен повторно, чтобы обеспечить выполнение полнотекстовых запросов к этому столбцу.

    Если не указано предложение WITH NO POPULATION, SQL Server автоматически запускает полное заполнение после добавления или сбрасывания столбца из полнотекстового индекса.

  • TYPE COLUMN type_column_name
    Имя столбца в таблице table_name, который содержит тип документа в столбце column_name. Укажите аргумент type_column_name, только если столбец или столбцы column_name имеют тип varbinary(max) или image.

    Значение параметра TYPE COLUMN может быть типом данных char, nchar, varchar или nvarchar. Дополнительные сведения о полнотекстовых файловых форматах и индексировании данных, хранимых в столбцах типа varbinary(max), см. в разделе Фильтры полнотекстового поиска.

  • LANGUAGE language_term
    Язык данных, хранимых в столбце column_name.

    Аргумент language_term необязательный и может быть указан как строка, целое или шестнадцатеричное значение, соответствующее коду этого языка (LCID). Если аргумент language_term указан, то язык, который он представляет, будет применен ко всем элементам условия поиска. Если не указано никакого значения, используется полнотекстовый язык по умолчанию экземпляра SQL Server.

    Для доступа к данным о полнотекстовом языке по умолчанию экземпляра SQL Server следует использовать хранимую процедуру sp_configure. Дополнительные сведения см. в разделе Параметр 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) языковый ресурс. Для документов, хранимых в столбцах типа BLOB и XML, кодирование языка в документе будет применяться во время индексирования. Например: в XML-столбцах атрибут xml:lang в XML-документах будет идентифицировать язык. Во время запроса значение, предварительно указанное в аргументе language_term, становится языком по умолчанию, используемым для полнотекстовых запросов, кроме случая, когда аргумент language_term указан как часть полнотекстового запроса.

  • [ ,...n]
    Указывает, что для предложений ADD и DROP может быть указано несколько столбцов. Если указано несколько столбцов, то эти столбцы следует разделить запятыми.
  • WITH NO POPULATION
    Указывает, что полнотекстовый индекс не будет заполнен после операции ADD или DROP над столбцом. Индекс будет заполнен, только если пользователь выполняет команду START...POPULATION.

    Если состояние CHANGE_TRACKING включено и указано предложение WITH NO POPULATION, то SQL Server возвращает ошибку. Если состояние CHANGE_TRACKING включено и не указано предложение WITH NO POPULATION, то SQL Server выполняет полное заполнение индекса после его создания.

    Параметр NO POPULATION может использоваться, только когда состояние CHANGE_TRACKING имеет значение OFF. Если указан параметр NO POPULATION, SQL Server не заполняет индекс после создания. Индекс заполняется только после того, как пользователь выдает команду ALTER FULLTEXT INDEX...START POPULATION. Если параметр NO POPULATION не указан, SQL Server заполняет индекс после создания.

  • START {FULL|INCREMENTAL|UPDATE} POPULATION
    Указывает SQL Server начать заполнение полнотекстового индекса table_name. Если заполнение полнотекстового индекса уже выполняется, то SQL Server возвращает предупреждение и не начинает нового заполнения.
    • FULL
      Указывает, что каждая строка таблицы должна быть извлечена для полнотекстового индексирования, даже если строки уже были индексированы.
    • INCREMENTAL
      Указывает, что только строки, измененные со времени последнего заполнения, должны извлекаться для полнотекстового индексирования. Аргумент INCREMENTAL применим, только если в таблице есть столбец типа timestamp. Если таблица в полнотекстовом каталоге не содержит столбец типа timestamp, то выполняется заполнение FULL.
    • UPDATE
      Указывает обработку всех вставок, обновлений и удалений со времени последнего обновления индекса отслеживания изменений. В таблице должно быть включено заполнение отслеживания изменений, но индекс фонового обновления или автоматическое отслеживание изменений не должны быть включены.
  • {STOP | PAUSE | RESUME } POPULATION
    Останавливает или приостанавливает процесс заполнения; либо останавливает или возобновляет приостановленное заполнение.

    Предложение STOP POPULATION не останавливает автоматическое отслеживание изменений или фоновое обновление индекса. Чтобы остановить отслеживание изменений, следует использовать команду SET CHANGE_TRACKING OFF.

    Предложения PAUSE POPULATION и RESUME POPULATION могут использоваться только для полных заполнений. Они не существенны для других типов заполнения, так как последние возобновляют сканирование с момента, когда сканирование было остановлено.

Замечания

Если экземпляры данных типа xml индексированы для полнотекстового поиска, то атрибуты и имена элементов не индексируются и не могут быть запрошены, однако значения элементов в каждом экземпляре индексируются, и к ним могут направляться запросы. Поддерживаются XML-документы и фрагменты правильного формата, содержащие несколько языков.

Разрешения

Пользователь должен иметь разрешение ALTER на таблицу или представление, быть членом фиксированной серверной роли sysadmin или фиксированной роли базы данных db_ddladmin или db_owner.

Примеры

В следующем примере изменяется полнотекстовый индекс в таблице JobCandidate базы данных AdventureWorks.

USE AdventureWorks;
GO
ALTER FULLTEXT INDEX ON HumanResources.JobCandidate ENABLE;
GO

См. также

Справочник

CREATE FULLTEXT INDEX (Transact-SQL)
DROP FULLTEXT INDEX (Transact-SQL)

Другие ресурсы

Полнотекстовый поиск

Справка и поддержка

Получение помощи по SQL Server 2005

Журнал изменений

Версия Журнал

12 декабря 2006 г.

Новое содержимое
  • В синтаксис добавлены параметры PAUSE | RESUME POPULATION.