Partilhar via


ALTER FULLTEXT INDEX (Transact-SQL)

Altera as propriedades de um índice de texto completo.

Ícone de vínculo de tópicoConvenções de sintaxe Transact-SQL

Sintaxe

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 
   | SET STOPLIST { OFF| SYSTEM | stoplist_name }
     [ WITH NO POPULATION ] 
   }
[;]

Argumentos

  • table_name
    É o nome da tabela ou exibição indexada que contém a coluna ou colunas incluídas no índice de texto completo. A especificação dos nomes dos proprietários da tabela e do banco de dados é opcional.

  • ENABLE | DISABLE
    Instrui o SQL Server quanto à coleta de dados de índice de texto completo para table_name. ENABLE ativa o índice de texto completo. DISABLE desativa o índice de texto completo. A tabela não dará suporte a consultas de texto completo enquanto o índice estiver desabilitado.

    Desabilitar um índice de texto completo permite desativar o controle de alterações, mantendo o índice de texto completo que você pode reativar usando ENABLE a qualquer momento. Quando o índice de texto completo é desabilitado, os metadados de índice de texto completo permanecem nas tabelas do sistema. Se CHANGE_TRACKING estiver no estado habilitado (atualização automática ou manual) quando o índice de texto completo estiver desabilitado, o estado do índice congelará, qualquer rastreamento em andamento será interrompido e as novas alterações nos dados de tabela não serão controladas ou propagadas no índice.

  • SET CHANGE_TRACKING {MANUAL | AUTO | OFF}
    Especifica se as alterações (atualizações, exclusões ou inserções) feitas nas colunas da tabela que estão cobertas pelo índice de texto completo serão propagadas pelo SQL Server para o índice de texto completo. As alterações de dados através de WRITETEXT e UPDATETEXT não são refletidas no índice de texto completo e não são obtidas com o controle de alterações.

    ObservaçãoObservação

    Para obter informações sobre a interação do controle de alterações e de WITH NO POPULATION, consulte "Comentários" posteriormente neste tópico.

  • MANUAL
    Especifica que as alterações controladas serão propagadas manualmente chamando a instrução ALTER FULLTEXT INDEX … START UPDATE POPULATION Transact-SQL (população manual). É possível usar o SQL Server Agent para chamar essa instrução Transact-SQL periodicamente.

  • AUTO
    Especifica que as alterações controladas serão propagadas automaticamente conforme os dados forem modificados na tabela base (população automática). Embora sejam propagadas automaticamente, essas alterações talvez não sejam refletidas imediatamente no índice de texto completo. AUTO é o padrão.

  • OFF
    Especifica que o SQL Server não manterá uma lista de alterações nos dados indexados.

  • ADD | DROP column_name
    Especifica as colunas a serem adicionadas ou excluídas de um índice de texto completo. A coluna ou colunas devem ser do tipo char, varchar, nchar, nvarchar, text, ntext, image, xml, varbinary ou varbinary(max).

    Use apenas a cláusula DROP em colunas que foram habilitadas anteriormente para indexação de texto completo.

    Use TYPE COLUMN e LANGUAGE com a cláusula ADD para definir essas propriedades em column_name. Quando uma coluna é adicionada, o índice de texto completo na tabela deve ser repopulado para que as consultas de texto completo nessa coluna funcionem.

    ObservaçãoObservação

    O fato de o índice de texto completo ser populado depois da inclusão ou exclusão de uma coluna de texto completo depende de o controle de alterações estar habilitado e de WITH NO POPULATION ter sido especificado. Para obter mais informações, consulte "Comentários" posteriormente neste tópico.

  • TYPE COLUMN type_column_name
    Especifica o nome de uma coluna de tabela, type_column_name, que é usada para manter o tipo de um documento varbinary, varbinary(max) ou image. Essa coluna, conhecida como coluna de tipo, contém uma extensão de arquivo fornecida pelo usuário (.doc, .pdf, .xls e assim por diante). A coluna de tipo deve ser do tipo char, nchar, varchar ou nvarchar.

    Especifique TYPE COLUMN type_column_name somente se column_name especificar uma coluna varbinary, varbinary(max) ou image, na qual os dados são armazenados como dados binários. Caso contrário, o SQL Server retornará um erro.

    ObservaçãoObservação

    Na hora da indexação, o Mecanismo de Texto Completo usa a abreviação na coluna de tipo de cada linha da tabela para identificar qual filtro de pesquisa de texto completo usar para o documento no column_name. O filtro carrega o documento como um fluxo binário, remove as informações sobre formatação e envia o texto do documento para o componente do separador de palavras. Para obter mais informações, consulte Filtros da pesquisa de texto completo.

  • LANGUAGE language_term
    É o idioma dos dados armazenados em column_name.

    language_termé opcional e pode ser especificado como uma cadeia de caracteres, um inteiro ou um valor hexadecimal que corresponda ao LCID (identificador local) de um idioma. Se language_term for especificado, o idioma que ele representa será aplicado a todos os elementos do critério de pesquisa. Se nenhum valor for especificado, o idioma de texto completo padrão da instância do SQL Server será usado.

    Use o procedimento armazenado sp_configure para acessar informações sobre o idioma de texto completo padrão da instância do SQL Server. Para obter mais informações, consulte Opção default full-text language.

    Quando especificado como uma cadeia de caracteres, language_term corresponde ao valor da coluna alias na tabela do sistema syslanguages. A sequência deve estar entre aspas simples, como em 'language_term'. Quando especificado como um inteiro, language_term é o LCID real que identifica o idioma. Quando especificado como um valor hexadecimal, language_term é 0x seguido pelo valor hexa do LCID. O valor hexa não deve exceder oito dígitos, inclusive zeros à esquerda.

    Se o valor estiver no formato DBCS (conjunto de caracteres de dois bytes), o SQL Server o converterá em Unicode.

    Recursos, como separadores e lematizadores de palavras, devem se habilitados para o idioma especificado como language_term. Se tais recursos não aceitarem o idioma especificado, o SQL Server retornará um erro.

    Para colunas não BLOB e não XML que contêm dados de texto em vários idiomas ou casos em que o idioma do texto armazenado na coluna é desconhecido, use o recurso de idioma neutro (0x0). Para documentos armazenados em colunas de tipo XML ou BLOB, a codificação de idioma dentro do documento será usada na hora da indexação. Por exemplo, em colunas XML, o atributo xml:lang em documentos XML identificará o idioma. Na hora da consulta, o valor especificado anteriormente em language_term se torna o idioma padrão usado para consultas de texto completo a menos que language_term esteja especificado como parte de uma consulta de texto completo.

  • [ ,...n]
    Indica que várias colunas podem ser especificadas para as cláusulas ADD ou DROP. Ao especificar várias colunas, separe-as com vírgulas.

  • WITH NO POPULATION
    Especifica que o índice de texto completo não será populado depois de uma operação de coluna ADD ou DROP ou uma operação SET STOPLIST. O índice só será populado se o usuário executar um comando START... POPULATION.

    Quando a opção NO POPULATION é especificada, o SQL Server não popula um índice. O índice só é populado depois que o usuário usa um comando ALTER FULLTEXT INDEX...START POPULATION. Quando a opção NO POPULATION não é especificada, SQL Server popula o índice.

    Se CHANGE_TRACKING estiver habilitado e WITH NO POPULATION for especificado, o SQL Server retornará um erro. Se CHANGE_TRACKING for habilitado e WITH NO POPULATION não for especificado, o SQL Server executará uma população completa no índice.

    ObservaçãoObservação

    Para obter mais informações sobre a interação do controle de alterações e WITH NO POPULATION, consulte "Comentários" posteriormente neste tópico.

  • START {FULL|INCREMENTAL|UPDATE} POPULATION
    Instrui o SQL Server a começar a população do índice de texto completo de table_name. Se uma população de índice de texto completo já estiver em andamento, o SQL Server retornará um aviso e não iniciará a nova população.

    • FULL
      Especifica que cada linha da tabela será recuperada para a indexação de texto completo, mesmo que as linhas já tenham sido indexadas.

    • INCREMENTAL
      Especifica que somente as linhas modificadas desde que a última população serão recuperadas para indexação de texto completo. INCREMENTAL pode ser aplicado somente se a tabela tiver uma coluna do tipo timestamp. Se uma tabela no catálogo de texto completo não tiver uma coluna do tipo timestamp, a tabela sofrerá uma população FULL.

    • UPDATE
      Especifica o processamento de todas as inserções, atualizações ou exclusões desde a última vez em que o índice de controle de alterações foi atualizado. A população de controle de alterações deve ser habilitada em uma tabela, mas o índice de atualização em segundo plano ou o controle de alterações automático não deve ser ativado.

  • {STOP | PAUSE | RESUME } POPULATION
    Interrompe ou pausa qualquer população em andamento; ou interrompe ou retoma qualquer população pausada.

    STOP POPULATION não interrompe o controle de alterações automático ou índice de atualização em segundo plano. Para interromper o controle de alterações, use SET CHANGE_TRACKING OFF.

    PAUSE POPULATION e RESUME POPULATION podem ser usados somente para populações completas. Eles não são relevantes a outros tipos de população porque as outras populações retomam os rastreamentos do ponto em que eles pararam.

  • SET STOPLIST { OFF| SYSTEM | stoplist_name }
    Altera a lista de palavras irrelevantes de texto completo associada ao índice, se houver.

    • DESATIVADO
      Especifica que nenhuma stoplist seja associada ao índice de texto completo.

    • SYSTEM
      Especifica que a STOPLIST do sistema de texto completo padrão deve ser usada para esse índice de texto completo.

    • stoplist_name
      Especifica o nome da lista de palavras irrelevantes a ser associada ao índice de texto completo.

    Para obter mais informações, consulte Palavras irrelevantes e listas de palavras irrelevantes.

Comentários

Em colunas xml, você pode criar um índice de texto completo que indexa o conteúdo de elementos XML, mas ignora a marcação XML. Os valores dos atributos são indexados como texto completo a menos que sejam valores numéricos. Marcas de elemento são usadas como limites do token. Há suporte para documentos XML ou HTML bem formados e fragmentos que contêm vários idiomas. Para obter mais informações, consulte Índice de texto completo em uma coluna XML.

Interações do controle de alterações e do parâmetro NO POPULATION

O fato de o índice de texto completo ser preenchido depende de o controle de alterações estar habilitado e de WITH NO POPULATION ter sido especificado na instrução ALTER FULLTEXT INDEX. A tabela a seguir resume o resultado da interação.

Controle de alterações

WITH NO POPULATION

Resultado

Não habilitado

Não especificado

Uma população completa é executada no índice.

Não habilitado

Especificado

Nenhuma população do índice é feita até que uma instrução ALTER FULLTEXT INDEX...START POPULATION seja emitida.

Habilitado

Especificado

É gerado um erro e o índice não é alterado.

Habilitado

Não especificado

Uma população completa é executada no índice.

Para obter mais informações sobre população dos índices de texto completo, consulte População do índice de texto completo.

Permissões

O usuário deve ter a permissão ALTER na tabela ou exibição indexada ou ser membro da função de servidor fixa sysadmin ou das funções de banco de dados fixas db_ddladmin ou db_owner.

Se a opção SET STOPLIST for especificada, o usuário deverá ter a permissão REFERENCES na stoplist. O proprietário da STOPLIST pode conceder essa permissão. Além disso, conceder permissão REFERENCES requer permissões ALTER FULLTEXT CATALOG.

ObservaçãoObservação

O público recebe permissão REFERENCE para a lista de palavras irrelevantes padrão fornecida com o SQL Server.

Exemplos

A. Definindo rastreamento manual de alterações

O exemplo a seguir define o rastreamento manual de alterações em um índice de texto completo na tabela JobCandidate do banco de dados AdventureWorks2008R2.

USE AdventureWorks2008R2;
GO
ALTER FULLTEXT INDEX ON HumanResources.JobCandidate
   SET CHANGE_TRACKING MANUAL;
GO

B. Iniciando uma população completa

O exemplo a seguir inicia uma população completa no índice de texto completo na tabela JobCandidate do banco de dados AdventureWorks2008R2.

USE AdventureWorks2008R2;
GO
ALTER FULLTEXT INDEX ON HumanResources.JobCandidate 
   START FULL POPULATION;
GO