Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Banco de Dados SQL do Azure
Instância Gerenciada SQL do Azure
Cria um índice de texto completo numa tabela ou numa vista indexada numa base de dados no SQL Server. Apenas um índice de texto completo é permitido por tabela ou vista indexada, e cada índice de texto completo aplica-se a uma única tabela ou vista indexada. Um índice em texto completo pode conter até 1024 colunas.
Transact-SQL convenções de sintaxe
Sintaxe
CREATE FULLTEXT INDEX ON table_name
[ ( { column_name
[ TYPE COLUMN type_column_name ]
[ LANGUAGE language_term ]
[ STATISTICAL_SEMANTICS ]
} [ , ...n ]
) ]
KEY INDEX index_name
[ ON <catalog_filegroup_option> ]
[ WITH ( <with_option> [ , ...n ] ) ]
[;]
<catalog_filegroup_option>::=
{
fulltext_catalog_name
| ( fulltext_catalog_name , FILEGROUP filegroup_name )
| ( FILEGROUP filegroup_name , fulltext_catalog_name )
| ( FILEGROUP filegroup_name )
}
<with_option>::=
{
CHANGE_TRACKING [ = ] { MANUAL | AUTO | OFF [ , NO POPULATION ] }
| STOPLIST [ = ] { OFF | SYSTEM | stoplist_name }
| SEARCH PROPERTY LIST [ = ] property_list_name
}
Arguments
table_name
O nome da tabela ou vista indexada que contém a coluna ou colunas incluídas no índice de texto completo.
column_name
O nome da coluna incluído no índice do texto completo. Apenas colunas do tipo char, varchar, nchar, nvarchar, text, ntext, image, xml e varbinary(max) podem ser indexadas para pesquisa em texto completo. Para especificar múltiplas colunas, repita a cláusula column_name da seguinte forma:
CRIAR ÍNDICE DE TEXTO COMPLETO EM table_name (column_name1 [...], column_name2 [...]) ...
TIPO COLUNA type_column_name
Especifica o nome de uma coluna de tabela, type_column_name, que é usada para armazenar o tipo de documento de um varbinary(max) ou documento de imagem . Esta coluna, conhecida como coluna de tipo, contém uma extensão de ficheiro fornecida pelo utilizador (.doc, .pdf, .xls, e assim sucessivamente). A coluna tipo deve ser do tipo char, nchar, varchar ou nvarchar.
Especificar a COLUNA TYPE type_column_name apenas se column_name especificar uma coluna varbinary(max) ou imagem , na qual os dados são armazenados como dados binários; caso contrário, o SQL Server devolve um erro.
Observação
No momento da indexação, o Full-Text Engine utiliza a abreviatura na coluna de tipo de cada linha da tabela para identificar qual o filtro de pesquisa em texto completo a usar para o documento em column_name. O filtro carrega o documento como um fluxo binário, remove a informação de formatação e envia o texto do documento para o componente word-breaker. Para obter mais informações, consulte Configurar e gerenciar filtros para pesquisa.
LÍNGUA language_term
A linguagem dos dados armazenados em column_name.
language_term é opcional e pode ser especificado como uma cadeia, valor inteiro ou hexadecimal correspondente ao identificador de localidade (LCID) de uma língua. Se não for especificado nenhum valor, é usada a linguagem padrão da instância do SQL Server.
Se language_term for especificado, a linguagem que representa é usada para indexar dados armazenados nas colunas char, nchar, varchar, nvarchar, texto e ntext . Esta linguagem é a linguagem padrão usada no momento da consulta se language_term não for especificada como parte de um predicado de texto completo contra a coluna.
Quando especificado como uma cadeia, language_term corresponde ao valor da coluna de alias na sys.syslanguages tabela do sistema. A cadeia deve estar contida 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 hexadecimal do LCID. O valor hexadecimal não deve exceder oito dígitos, incluindo zeros à esquerda.
Se o valor estiver no formato DBCS (conjunto de caracteres de byte duplo), o SQL Server o converterá em Unicode.
Recursos, como quebradores de palavras e stemmers, devem estar ativados para a linguagem especificada como language_term. Se esses recursos não suportarem a linguagem especificada, o SQL Server devolve um erro.
Use o sp_configure procedimento armazenado para aceder à informação sobre a linguagem de texto completo padrão da instância Microsoft SQL Server. Para mais informações, consulte sp_configure (Transact-SQL).
Para colunas que não são BLOB e não XML contêm dados de texto em várias línguas, ou para casos em que a linguagem do texto armazenado na coluna é desconhecida, pode ser apropriado usar o recurso de linguagem neutra (0x0). No entanto, primeiro deve compreender as possíveis consequências de usar o recurso de língua neutra ().0x0 Para informações sobre as possíveis soluções e consequências de usar o recurso de língua neutra (),0x0 veja Escolher uma Linguagem ao Criar um Índice Full-Text.
Para documentos armazenados em colunas do tipo XML ou BLOB, a codificação da linguagem dentro do documento é usada no momento da indexação. Por exemplo, nas colunas XML, o xml:lang atributo nos documentos XML identifica a linguagem. No momento da consulta, o valor anteriormente especificado em language_term torna-se a linguagem padrão usada para consultas de texto completo, a menos que language_term seja especificado como parte de uma consulta de texto completo.
STATISTICAL_SEMANTICS
Aplica-se a: SQL Server (SQL Server 2012 (11.x) e posteriores)
Cria os índices adicionais de frases-chave e similaridade de documentos que fazem parte da indexação semântica estatística. Para obter mais informações, consulte Pesquisa semântica (SQL Server).
ÍNDICE CHAVE index_name
O nome do índice de chaves único em table_name. O ÍNDICE DE CHAVE deve ser uma coluna única, de chave única e não anulável. Selecione o menor índice de chave única para a chave única em texto completo. Para o melhor desempenho, recomendamos um tipo de dado inteiro para a chave de texto completo.
fulltext_catalog_name
O catálogo de texto completo utilizado para o índice de texto completo. O catálogo já deve existir na base de dados. Esta cláusula é opcional. Se não for especificado, é usado um catálogo por defeito. Se não existir catálogo predefinido, o SQL Server devolve um erro.
filegroup_name GRUPO DE ARQUIVOS
Cria o índice de texto completo especificado no grupo de ficheiros especificado. O grupo de arquivos já deve existir. Se a cláusula FILEGROUP não for especificada, o índice de texto completo é colocado no mesmo grupo de ficheiros que a tabela base ou a vista para uma tabela não particionada, ou no grupo de ficheiros primário para uma tabela particionada.
CHANGE_TRACKING [ = ] { MANUAL | AUTO | DESLIGADO [ , SEM POPULAÇÃO ] }
Especifica se alterações (atualizações, eliminações ou inserções) feitas nas colunas da tabela 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 detetadas com o acompanhamento de alterações.
MANUAL
Especifica que as alterações acompanhadas devem ser propagadas manualmente chamando o ALTER FULLTEXT INDEX ... INICIAR ATUALIZAÇÃO DA POPULAÇÃO Transact-SQL declaração (população manual). Você pode usar o SQL Server Agent para chamar essa instrução Transact-SQL periodicamente.
AUTO
Especifica que as alterações acompanhadas são propagadas automaticamente à medida que os dados são modificados na tabela base (população automática). Embora as alterações sejam propagadas automaticamente, estas alterações podem não ser refletidas imediatamente no índice do texto completo. AUTO é o padrão.
DESLIGADO [ , SEM POPULAÇÃO ]
Especifica que o SQL Server não mantém uma lista de alterações aos dados indexados. Quando NENHUMA POPULAÇÃO não é especificada, o SQL Server preenche totalmente o índice após a sua criação.
A opção SEM POPULAÇÃO só pode ser usada quando CHANGE_TRACKING está DESLIGADO. Quando NÃO POPULAÇÃO é especificada, o SQL Server não preenche um índice após a sua criação. O índice só é preenchido depois de o utilizador executar o comando ALTER FULLTEXT INDEX com a cláusula START FULL POPULATION ou START INCREMENTAL POPULATION.
STOPLIST [ = ] { OFF | SISTEMA | stoplist_name }
Associa uma lista de paragens em texto completo ao índice. O índice não é preenchido com quaisquer tokens que façam parte da lista de paragens especificada. Se a STOPLIST não for especificada, o SQL Server associa a lista de stoplist em texto completo do sistema ao índice.
DESLIGADO
Especifica que nenhuma lista de paragens está associada ao índice do texto completo.
SYSTEM
Especifica que o sistema de texto completo predefinido STOPLIST deve ser usado para este índice de texto completo.
stoplist_name
Especifica o nome da lista de paradas a ser associada ao índice de texto completo.
LISTA DE PROPRIEDADES DE PESQUISA [ = ] property_list_name
Aplica-se a: SQL Server (SQL Server 2012 (11.x) e posteriores)
Associa uma lista de propriedades de pesquisa ao índice.
DESLIGADO
Especifica que nenhuma lista de propriedades está associada ao índice de texto completo.
property_list_name
Especifica o nome da lista de propriedades de pesquisa a associar ao índice de texto completo.
Observações
Nas colunas xml , pode criar um índice em texto completo que indexa o conteúdo dos elementos XML, mas ignora a marcação XML. Os valores dos atributos são indexados em texto completo, a menos que sejam valores numéricos. As etiquetas de elemento são usadas como limites de token. São suportados documentos XML ou HTML bem formados e fragmentos contendo múltiplas línguas. Para obter mais informações, consulte Usar Full-Text pesquisa com colunas XML.
Recomendamos que a coluna da chave de índice seja um tipo de dado inteiro. Isto proporciona otimizações no momento da execução da consulta.
CRIAR ÍNDICE DE TEXTO COMPLETO não pode ser colocado dentro de uma transação de utilizador. Esta instrução deve ser executada numa transação implícita própria.
Para mais informações sobre índices em texto integral, consulte Criar e Gerir Full-Text Índices.
Interações entre o acompanhamento de alterações e NENHUM PARÂMETRO POPULACIONAL
Se o índice em texto completo é preenchido depende de estar ativado o acompanhamento de alterações e se WITH NO POPULATION está especificado na instrução ALTER FULLTEXT INDEX. A tabela seguinte resume o resultado da sua interação.
| Controlo de Alterações | SEM POPULAÇÃO | Result |
|---|---|---|
| Não Ativado | Não especificado | É realizada uma população completa no índice. |
| Não Ativado | Especificado | Não ocorre nenhuma população do índice até que um ALTER FULLTEXT INDEX... É emitida a declaração START POPULATION. |
| Ativado(a) | Especificado | Surge um erro e o índice não é alterado. |
| Ativado(a) | Não especificado | É realizada uma população completa no índice. |
Para mais informações sobre como preencher índices de texto completo, consulte Preencher Full-Text Índices.
Permissions
O utilizador deve ter REFERENCES permissão no catálogo de texto completo e permissão ALTER na tabela ou na vista indexada, ou ser membro do sysadmin papel fixo do servidor, ou db_owner, ou db_ddladmin de funções fixas na base de dados.
Se SET STOPLIST for especificado, o utilizador deve ter permissão de REFERÊNCIAS na lista de paragens especificada. O proprietário do STOPLIST pode conceder esta autorização.
Observação
O público recebe permissão de REFERÊNCIA para a lista de paragens padrão que vem com o SQL Server.
Examples
A. Crie um índice único, um catálogo de texto integral e um índice de texto integral
O exemplo seguinte cria um índice único na JobCandidateID coluna da HumanResources.JobCandidate tabela da base de dados de exemplo AdventureWorks2025. O exemplo cria então um catálogo de texto completo predefinido, ft. Finalmente, o exemplo cria um índice em texto completo na Resume coluna, usando o ft catálogo e a lista de stoplists do sistema.
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
WITH STOPLIST = SYSTEM;
GO
B. Crie um índice em texto completo em várias colunas de tabela
O exemplo a seguir cria um catálogo de texto completo, production_catalog, no banco de dados de exemplo AdventureWorks. Em seguida, o exemplo cria um índice de texto completo que usa esse novo catálogo. O índice do texto completo está nos ReviewerName, , e Comments nas colunas do Production.ProductReviewEmailAddress. Para cada coluna, o exemplo especifica o LCID do inglês, 1033, que é a língua dos dados nas colunas. Este índice de texto completo utiliza um índice de chave único existente, PK_ProductReview_ProductReviewID. Como recomendado, esta chave índice está numa coluna inteira, ProductReviewID.
CREATE FULLTEXT CATALOG production_catalog;
GO
CREATE FULLTEXT INDEX ON Production.ProductReview (
ReviewerName LANGUAGE 1033,
EmailAddress LANGUAGE 1033,
Comments LANGUAGE 1033
) KEY INDEX PK_ProductReview_ProductReviewID ON production_catalog;
GO
C. Crie um índice em texto completo com uma lista de propriedades de pesquisa sem a preencher
O exemplo seguinte cria um índice de texto completo nas Titlecolunas , DocumentSummary, Document e da Production.Document tabela. O exemplo especifica o LCID do inglês, 1033, que é a língua dos dados nas colunas. Este índice de texto completo utiliza o catálogo de texto completo por defeito e um índice de chave único existente, PK_Document_DocumentID. Como recomendado, esta chave índice está numa coluna inteira, DocumentID.
O exemplo especifica a lista de paragens do SYSTEM. Também especifica uma lista de propriedades de pesquisa, DocumentPropertyList; para um exemplo que cria esta lista de propriedades, veja CRIAR LISTA DE PROPRIEDADES DE PESQUISA (Transact-SQL).
O exemplo especifica que o acompanhamento das alterações está desfeito sem população. Mais tarde, durante as horas de menor afluência, o exemplo utiliza uma instrução ALTER FULLTEXT INDEX para iniciar uma população completa no novo índice e ativar o acompanhamento automático de alterações.
CREATE FULLTEXT INDEX ON Production.Document (
Title LANGUAGE 1033,
DocumentSummary LANGUAGE 1033,
Document TYPE COLUMN FileExtension LANGUAGE 1033
) KEY INDEX PK_Document_DocumentID
WITH STOPLIST = SYSTEM,
SEARCH PROPERTY LIST = DocumentPropertyList,
CHANGE_TRACKING OFF,
NO POPULATION;
GO
Mais tarde, fora do horário de pico, o índice é preenchido:
ALTER FULLTEXT INDEX ON Production.Document SET CHANGE_TRACKING AUTO;
GO