Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Descreve como habilitar ou desabilitar a indexação semântica estatística em colunas selecionadas que contêm documentos ou texto.
A Pesquisa Semântica Estatística usa os índices criados pelo Full-Text Search e cria índices adicionais. Como resultado dessa dependência na pesquisa de texto completo, você cria um novo índice semântico quando define um novo índice de texto completo ou quando altera um índice de texto completo existente. Você pode criar um novo índice semântico usando instruções Transact-SQL ou usando o Assistente de Indexação de Full-Text e outras caixas de diálogo no SQL Server Management Studio, conforme descrito neste tópico.
Criando um índice semântico
Requisitos e restrições para criar um índice semântico
Você pode criar um índice em qualquer um dos objetos de banco de dados com suporte para indexação de texto completo, incluindo tabelas e exibições indexadas.
Antes de habilitar a indexação semântica para colunas específicas, os seguintes pré-requisitos devem existir:
Um catálogo de texto completo deve existir para o banco de dados.
A tabela deve ter um índice de texto completo.
As colunas selecionadas devem participar do índice de texto completo.
Você pode criar e habilitar todos esses requisitos ao mesmo tempo.
Você pode criar um índice semântico em colunas que tenham qualquer um dos tipos de dados com suporte para indexação de texto completo. Para obter mais informações, consulte Criar e gerenciar índices de Full-Text.
Você pode especificar qualquer tipo de documento com suporte para indexação de texto completo para
varbinary(max)colunas. Para obter mais informações, consulte Como determinar quais tipos de documento podem ser indexados neste tópico.A indexação semântica cria dois tipos de índices para as colunas selecionadas : um índice de frases-chave e um índice de similaridade de documento. Não é possível selecionar apenas um tipo de índice ou outro ao habilitar a indexação semântica. No entanto, você pode consultar esses dois índices de forma independente. Para obter mais informações, consulte Localizar frases-chave em documentos com pesquisa semântica e localizar documentos semelhantes e relacionados com pesquisa semântica.
Se você não especificar explicitamente um LCID para um índice semântico, somente a linguagem primária e suas estatísticas de idioma associadas serão usadas para indexação semântica.
Se você especificar um idioma para uma coluna para a qual o modelo de idioma não está disponível, a criação do índice falhará e retornará uma mensagem de erro.
Como criar um índice semântico quando não houver nenhum índice de Full-Text
Ao criar um novo índice de texto completo com a instrução CREATE FULLTEXT INDEX , você pode habilitar a indexação semântica no nível da coluna especificando a palavra-chave STATISTICAL_SEMANTICS como parte da definição da coluna. Você também pode habilitar a indexação semântica ao usar o Assistente de Indexação de Full-Text para criar um novo índice de texto completo.
Criar um novo índice semântico usando Transact-SQL
Chame a instrução CREATE FULLTEXT INDEX e especifique STATISTICAL_SEMANTICS para cada coluna na qual você deseja criar um índice semântico. Para obter mais informações sobre todas as opções dessa instrução, consulte CREATE FULLTEXT INDEX (Transact-SQL).
Exemplo 1: criar um índice exclusivo, um índice de texto completo e um índice semântico
O exemplo a seguir cria um catálogo de texto completo padrão, ft. Em seguida, o exemplo cria um índice exclusivo na coluna JobCandidateID da tabela HumanResources.JobCandidate do banco de dados de exemplo AdventureWorks2012. Esse índice exclusivo é necessário como a coluna de chave para um índice de texto completo. Em seguida, o exemplo cria um índice de texto completo e um índice semântico na coluna Retomar .
CREATE FULLTEXT CATALOG ft AS DEFAULT
GO
CREATE UNIQUE INDEX ui_ukJobCand
ON HumanResources.JobCandidate(JobCandidateID)
GO
CREATE FULLTEXT INDEX ON HumanResources.JobCandidate
(Resume
Language 1033
Statistical_Semantics
)
KEY INDEX JobCandidateID
WITH STOPLIST = SYSTEM
GO
Exemplo 2: Criar um índice semântico e de texto completo em várias colunas com população de índice atrasada
O exemplo a seguir cria um catálogo de texto completo, documents_catalog, no banco de dados de exemplo AdventureWorks2012. Em seguida, o exemplo cria um índice de texto completo que usa esse novo catálogo. O índice de texto completo é criado nas colunas Título, DocumentSummary e Documento da tabela Production.Document , enquanto o índice semântico é criado apenas na coluna Documento . Esse índice de texto completo usa o catálogo de texto completo recém-criado e um índice de chave exclusivo existente, PK_Document_DocumentID. Conforme recomendado, essa chave de índice é criada em uma coluna de inteiro, DocumentID. O exemplo especifica o LCID para inglês, 1033, que é o idioma dos dados nas colunas.
Este exemplo também especifica que o controle de alterações está desativado sem população. Posteriormente, fora do horário de pico, o exemplo usa uma instrução ALTER FULLTEXT INDEX para iniciar uma população completa no novo índice e habilitar o controle automático de alterações.
CREATE FULLTEXT CATALOG documents_catalog
GO
CREATE FULLTEXT INDEX ON Production.Document
(
Title
Language 1033,
DocumentSummary
Language 1033,
Document
TYPE COLUMN FileExtension
Language 1033
Statistical_Semantics
)
KEY INDEX PK_Document_DocumentID
ON documents_catalog
WITH CHANGE_TRACKING OFF, NO POPULATION
GO
Mais tarde, em um horário fora do pico, o índice é preenchido:
ALTER FULLTEXT INDEX ON Production.Document SET CHANGE_TRACKING AUTO
GO
Criar um novo índice semântico usando o SQL Server Management Studio
Execute o Assistente de Indexação de Full-Text e habilite a Semântica Estatística na página Selecionar Colunas de Tabela para cada coluna na qual você deseja criar um índice semântico. Para obter mais informações, incluindo informações sobre como iniciar o Assistente de Indexação de Full-Text, consulte Usar o Assistente de Indexação de Full-Text.
Como criar um índice semântico quando houver um índice de Full-Text existente
Você pode adicionar indexação semântica ao alterar um índice de texto completo existente com a instrução ALTER FULLTEXT INDEX . Você também pode adicionar indexação semântica usando várias caixas de diálogo no SQL Server Management Studio.
Adicionar um índice semântico usando Transact-SQL
Chame a instrução ALTER FULLTEXT INDEX com as opções descritas abaixo para cada coluna na qual você deseja adicionar um índice semântico. Para obter mais informações sobre todas as opções dessa instrução, consulte ALTER FULLTEXT INDEX (Transact-SQL).
Os índices semânticos e de texto completo são repovoados após uma chamada para ALTER, a menos que você especifique o contrário.
Para adicionar a indexação de texto completo apenas a uma coluna, use a sintaxe ADD .
Para adicionar a indexação semântica e de texto completo a uma coluna, use a sintaxe ADD com a opção STATISTICAL_SEMANTICS .
Para adicionar indexação semântica a uma coluna que já está habilitada para indexação de texto completo, use a opção ADD STATISTICAL_SEMANTICS . Você só pode adicionar indexação semântica a uma coluna em uma única instrução ALTER .
Exemplo: adicionar indexação semântica a uma coluna que já tem indexação de texto completo
O exemplo a seguir altera um índice de texto completo existente na tabela Production.Document no banco de dados de exemplo AdventureWorks2012. O exemplo adiciona um índice semântico na coluna Documento da tabela Production.Document , que já tem um índice de texto completo. O exemplo especifica que o índice não será repovoado automaticamente.
ALTER FULLTEXT INDEX ON Production.Document
ALTER COLUMN Document
ADD Statistical_Semantics
WITH NO POPULATION
GO
Adicionar um índice semântico usando o SQL Server Management Studio
Você pode alterar as colunas habilitadas para indexação semântica e de texto completo na página Full-Text Colunas de Índice da caixa de diálogo Propriedades do ÍndiceFull-Text . Para obter mais informações, consulte Gerenciar índices de Full-Text.
Requisitos e restrições para alterar um índice existente
Você não pode alterar um índice existente enquanto a população do índice estiver em andamento. Para obter mais informações sobre como monitorar o progresso da população de índice, consulte Gerenciar e monitorar a Pesquisa Semântica.
Não é possível adicionar indexação a uma coluna e alterar ou remover a indexação para a mesma coluna, em uma única chamada à instrução ALTER FULLTEXT INDEX .
Descartando um índice semântico
Como remover um índice semântico
Você pode descartar a indexação semântica ao alterar um índice de texto completo existente com a instrução ALTER FULLTEXT INDEX . Você também pode descartar a indexação semântica usando várias caixas de diálogo no SQL Server Management Studio.
Remover um índice semântico usando Transact-SQL
- Para remover a indexação semântica somente de uma coluna ou colunas, chame a instrução ALTER FULLTEXT INDEX com a opção ALTER COLUMNcolumn_nameDROP STATISTICAL_SEMANTICS . Você pode remover a indexação de várias colunas em uma única instrução ALTER .
```sql
USE database_name
GO
ALTER FULLTEXT INDEX
ALTER COLUMN column_name
DROP STATISTICAL_SEMANTICS
GO
```
Para remover a indexação semântica e de texto completo de uma coluna, chame a instrução ALTER FULLTEXT INDEX com a opção ALTER COLUMNcolumn_nameDROP .
USE database_name GO ALTER FULLTEXT INDEX ALTER COLUMN column_name DROP GO
Remover um índice semântico usando o SQL Server Management Studio
Você pode alterar as colunas habilitadas para indexação semântica e de texto completo na página Full-Text Colunas de Índice da caixa de diálogo Propriedades do ÍndiceFull-Text . Para obter mais informações, consulte Gerenciar índices de Full-Text.
Requisitos e restrições para remover um índice semântico
Você não pode remover a indexação de texto completo de uma coluna enquanto mantém a indexação semântica. A indexação semântica depende da indexação de texto completo para resultados de similaridade do documento.
Não é possível especificar a opção NO POPULATION ao remover a indexação semântica da última coluna em uma tabela para a qual a indexação semântica foi habilitada. Um ciclo populacional é necessário para remover os resultados que foram indexados anteriormente.
Verificando se a pesquisa semântica está habilitada em objetos de banco de dados
Como verificar se a pesquisa semântica está habilitada em objetos de banco de dados
A pesquisa semântica está habilitada para um banco de dados?
Consulte a propriedade IsFullTextEnabled da função de metadados DATABASEPROPERTYEX (Transact-SQL).
Um valor retornado de 1 indica que a pesquisa de texto completo e a pesquisa semântica estão habilitadas para o banco de dados; um valor retornado de 0 indica que eles não estão habilitados.
SELECT DATABASEPROPERTYEX('database_name', 'IsFullTextEnabled')
GO
A pesquisa semântica está habilitada para uma tabela?
Consulte a propriedade TableFullTextSemanticExtraction da função de metadados OBJECTPROPERTYEX (Transact-SQL).
Um valor retornado de 1 indica que a pesquisa semântica está habilitada para a tabela; um valor retornado de 0 indica que ele não está habilitado.
SELECT OBJECTPROPERTYEX(OBJECT_ID('table_name'), 'TableFullTextSemanticExtraction')
GO
A pesquisa semântica está habilitada para uma coluna?
Para determinar se a pesquisa semântica está habilitada para uma coluna específica:
Consulte a propriedade StatisticalSemantics da função de metadados COLUMNPROPERTY (Transact-SQL).
Um valor retornado de 1 indica que a pesquisa semântica está habilitada para a coluna; um valor retornado de 0 indica que ele não está habilitado.
SELECT COLUMNPROPERTY(OBJECT_ID('table_name'), 'column_name', 'StatisticalSemantics') GOConsulte a visão de catálogo sys.fulltext_index_columns (Transact-SQL) para o índice de texto completo.
Um valor de 1 na coluna statistical_semantics indica que a coluna especificada está habilitada para indexação semântica, além da indexação de texto completo.
SELECT * FROM sys.fulltext_index_columns WHERE object_id = OBJECT_ID('table_name') GONo Pesquisador de Objetos no Management Studio, clique com o botão direito do mouse em uma coluna e selecione Propriedades. Na página Geral da caixa de diálogo Propriedades da Coluna , marque o valor da propriedade Semântica Estatística .
Um valor true indica que a coluna especificada está habilitada para indexação semântica, além da indexação de texto completo.
Determinando o que pode ser indexado para pesquisa semântica
Como verificar quais idiomas têm suporte para pesquisa semântica
Importante
Há suporte para menos idiomas para indexação semântica do que para indexação de texto completo. Como resultado, pode haver colunas que você pode indexar para pesquisa de texto completo, mas não para pesquisa semântica.
Consulte a exibição de catálogo sys.fulltext_semantic_languages (Transact-SQL).
SELECT * FROM sys.fulltext_semantic_languages
GO
Há suporte para os idiomas a seguir para indexação semântica. Essa lista representa a saída da exibição de catálogo sys.fulltext_semantic_languages (Transact-SQL), ordenada pelo LCID.
| Idioma | Identificador de Localidade (LCID) |
|---|---|
| Alemão | 1031 |
| Inglês (EUA) | 1033 |
| Francês | Etapas de resolução para o seguinte ID do evento 1036 |
| Italiano | 1040 |
| Português (Brasil) | 1046 |
| Russo | 1049 |
| Sueco | 1053 |
| Inglês (Reino Unido) | 2057 |
| Português (Portugal) | 2070 |
| Espanhol | 3082 |
Como determinar quais tipos de documento podem ser indexados
Consulte a visão de catálogo sys.fulltext_document_types (Transact-SQL).
Se o tipo de documento que você deseja indexar não estiver na lista de tipos com suporte, talvez seja necessário localizar, baixar e instalar filtros adicionais. Para obter mais informações, consulte Exibir ou alterar filtros registrados e separadores de palavras.
Prática recomendada: considere a criação de um grupo de arquivos separado para o Full-Text e índices semânticos
Considere a criação de um grupo de arquivos separado para os índices semânticos e de texto completo se a alocação de espaço em disco for uma preocupação. Os índices semânticos são criados no mesmo grupo de arquivos que o índice de texto completo. Um índice semântico totalmente preenchido pode conter uma grande quantidade de dados.
Problema: pesquisar em uma coluna específica não retorna resultados
Um LCID não Unicode foi especificado para um idioma Unicode?
É possível habilitar a indexação semântica em um tipo de coluna não Unicode com um LCID para um idioma que tenha apenas palavras Unicode, como LCID 1049 para russo. Nesse caso, nenhum resultado será retornado dos índices semânticos nesta coluna.