Habilitar a pesquisa semântica em tabelas e colunas
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 que são criados pela Pesquisa de Texto Completo e cria índices adicionais. Como resultado dessa dependência na pesquisa de texto completo, você cria um novo índice semântico ao definir um novo índice de texto completo ou ao alterar um índice de texto completo existente. Você pode criar um novo índice semântico usando instruções Transact-SQL, ou usando o Assistente para Indexação de Texto Completo e outras caixas de diálogo no SQL Server Management Studio, conforme descrito neste tópico.
Neste tópico
Desejo...
Criar um índice semântico
Requisitos e restrições para criar um índice semântico
Como criar um índice semântico quando não existe índice de texto completo
Como criar um índice semântico quando existe um índice de texto completo
Requisitos e restrições para alterar um índice existente
Descartar um índice semântico
Como descartar um índice semântico
Requisitos e restrições para descartar um índice semântico
Verificar 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
Determinar o que pode ser indexado para Pesquisa Semântica
Como verificar os idiomas com suporte para a pesquisa semântica
Como determinar os tipos de documento que podem ser indexados
Saiba mais
Prática recomendada: considerar a criação de um grupo de arquivos separado para os índices de texto completo e semântico
Problema: a pesquisa em coluna específica não retorna resultados
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, inclusive tabelas e exibições indexadas.
Antes de habilitar a indexação semântica para colunas específicas, verifique se existem os seguintes pré-requisitos:
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.
É possível 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 texto completo.
Você pode especificar qualquer tipo de documento com suporte para indexação de texto completo para colunas varbinary(max). Para obter mais informações, consulte Como determinar os tipos de documento que podem ser indexados neste tópico.
A indexação semântica cria dois tipos de índices para as colunas que você seleciona – um índice de frases-chave e um índice de similaridade de documento. Você não pode selecionar somente um tipo de índice ou o outro quando habilita a indexação semântica. Entretanto, você pode consultar esses dois índices separadamente. Para obter mais informações, consulte Localizar frases chave em documentos com pesquisa semântica e Localizar documentos semelhantes e relacionados com a pesquisa semântica.
Se você não especificar explicitamente um LCID para um índice semântico, somente o idioma principal e suas estatísticas de idioma associadas serão usados para a indexação semântica.
Se você criar 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.
[TOP]
Como criar um índice semântico quando não existe índice de texto completo
Quando você criar um novo índice de texto completo com a instrução CREATE FULLTEXT INDEX, poderá habilitar a indexação semântica no nível de coluna especificando a palavra-chave STATISTICAL_SEMANTICS como parte da definição de coluna. Você também poderá habilitar a indexação semântica ao usar o Assistente para Indexação de Texto Completo 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ê queira 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. O exemplo cria um índice exclusivo na coluna JobCandidateID da tabela HumanResources.JobCandidate do banco de dados de exemplo AdventureWorks2012. Este índice exclusivo é necessário como a coluna de chave de um índice de texto completo. O exemplo cria um índice de texto completo 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 de texto completo e um índice semântico 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 Title, DocumentSummary e Document da tabela Production.Document, enquanto o índice semântico está apenas na coluna Document. Esse índice de texto completo usa o catálogo de texto completo padrão e um índice de chave exclusiva existente, PK_Document_DocumentID. Conforme recomendado, essa chave de índice é criada em uma coluna de inteiros, 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 nenhuma 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 de alterações automático.
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
Posteriormente, fora do horário de pico, o índice é populado:
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 para Indexação de Texto Completo e habilite Semântica Estatística na página Selecionar Colunas da Tabela para cada coluna na qual você queira criar um índice semântico. Para obter mais informações, inclusive sobre como iniciar o Assistente de Indexação de Texto Completo, consulte Usar o Assistente para Indexação de Texto Completo.
[TOP]
Como criar um índice semântico quando existe um índice de texto completo
Você pode adicionar a 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 novo í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ê queira 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 de texto completo e semântico são ambos repopulados após uma chamada a ALTER, a menos que você especifique de outra forma.
Para adicionar somente a indexação de texto completo a uma coluna, use a sintaxe ADD.
Para adicionar indexação de texto completo e semântica a uma coluna, use a sintaxe ADD com a opção STATISTICAL_SEMANTICS.
Para adicionar indexação de texto completo a uma coluna já habilitada para indexação de texto completo, use a opção STATISTICAL_SEMANTICS. Você só pode adicionar indexação semântica a uma coluna em uma única instrução ALTER.
Exemplo: adicionar a indexação semântica a uma coluna que já tenha a 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 Document da tabela Production.Document, que já tem um índice de texto completo. O exemplo especifica que o índice não será repopulado 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 que são habilitadas para indexação semântica e de texto completo na página Colunas de Índice de Texto Completo da caixa de diálogo Propriedades do Índice de Texto Completo. Para obter mais informações, consulte Gerenciar índices de texto completo.
[TOP]
Requisitos e restrições para alterar um índice existente
Você não pode alterar um índice existente enquanto a população do índice está em andamento. Para obter mais informações sobre como monitorar o andamento de população de índice, consulte Gerenciar e monitorar a pesquisa semântica.
Você não pode adicionar indexação a uma coluna, nem alterar ou remover a indexação para a mesma coluna, em uma única chamada à instrução ALTER FULLTEXT INDEX.
[TOP]
Descartando um índice semântico
Como descartar 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.
Descartar um novo índice semântico usando Transact-SQL
Para remover apenas a indexação semântica de uma coluna ou colunas, chame a instrução ALTER FULLTEXT INDEX com a opção ALTER COLUMN nome_coluna DROP STATISTICAL_SEMANTICS. Você pode remover a indexação de várias colunas em uma única instrução ALTER.
USE database_name GO ALTER FULLTEXT INDEX ALTER COLUMN column_name DROP STATISTICAL_SEMANTICS GO
Para remover apenas a indexação semântica de uma coluna ou colunas, chame a instrução ALTER FULLTEXT INDEX com a opção ALTER COLUMN column_name DROP.
USE database_name GO ALTER FULLTEXT INDEX ALTER COLUMN column_name DROP GO
Descartar um índice semântico usando o SQL Server Management Studio
Você pode alterar as colunas que são habilitadas para indexação semântica e de texto completo na página Colunas de Índice de Texto Completo da caixa de diálogo Propriedades do Índice de Texto Completo. Para obter mais informações, consulte Gerenciar índices de texto completo.
[TOP]
Requisitos e restrições para descartar um índice semântico
Você não pode remover a indexação de texto completo de uma coluna enquanto retém a indexação semântica. A indexação semântica depende da indexação de texto completo para resultados de similaridade de documento.
Você não pode especificar a opção NO POPULATION ao remover a indexação semântica da última coluna de uma tabela para a qual a indexação semântica foi habilitada. Um ciclo de população é necessário para remover os resultados que foram previamente indexados.
[TOP]
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 de retorno 1 indica a pesquisa de texto completo e a pesquisa semântica estão habilitada para o banco de dados; um valor de retorno 0 indica que não são habilitadas.
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 de retorno 1 indica a pesquisa semântica está habilitada para a tabela; um valor de retorno 0 indica que ela não está habilitada.
SELECT OBJECTPROPERTYEX(OBJECT_ID('table_name'), 'TableFullTextSemanticExtraction') GO
A pesquisa semântica está habilitada para uma coluna?
Para determinar se a pesquisa de semântica está habilitada para uma coluna específica:Consulte a propriedade StatisticalSemantics da função de metadados COLUMNPROPERTY (Transact-SQL).
Um valor de retorno 1 indica a pesquisa semântica está habilitada para a coluna; um valor de retorno 0 indica que ela não está habilitada.
SELECT COLUMNPROPERTY(OBJECT_ID('table_name'), 'column_name', 'StatisticalSemantics') GO
Consulte a exibição do catálogo sys.fulltext_index_columns (Transact-SQL) para obter o índice de texto completo.
Um valor 1 na coluna statistical_semantics indica que a coluna especificada está habilitada para a 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') GO
No 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, verifique o valor da propriedade Semântica Estatística.
Um valor True indica que a coluna especificada está habilitada para a indexação semântica, além da indexação de texto completo.
[TOP]
Determinando o que pode ser indexado para Pesquisa Semântica
Como verificar os idiomas com suporte para a pesquisa semântica
Importante |
---|
Há suporte para menos idiomas na indexação semântica do que na indexação de texto completo. Como resultado, pode haver colunas que permitam a indexação 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 seguintes idiomas na indexação semântica. Esta lista representa a saída da exibição de catálogo sys.fulltext_semantic_languages (Transact-SQL), ordenada por LCID.
Idioma |
LCID |
---|---|
Alemão |
1031 |
Inglês (EUA) |
1033 |
Francês |
1036 |
Italiano |
1040 |
Português (Brasil) |
1046 |
Russo |
1049 |
Sueco |
1053 |
Inglês (Reino Unido) |
2057 |
Português (Portugal) |
2070 |
Espanhol |
3082 |
[INÍCIO]
Como determinar os tipos de documento que podem ser indexados
Consulte a exibiçã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 preciso localizar, baixar e instalar filtros adicionais. Para obter mais informações, consulte Exibir ou alterar filtros registrados e separadores de palavras.
[TOP]
Prática recomendada: considerar a criação de um grupo de arquivos separado para os índices de texto completo e semântico
Considere criar um grupo de arquivos separado para os índices de texto completo e semântico se a alocação de espaço em disco for um problema. Os índices semânticos são criados no mesmo grupo de arquivos que o índice de texto completo. Um índice semântico totalmente populado pode conter uma grande quantidade de dados.
[TOP]
Problema: a pesquisa em 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 o LCID 1049 para russo. Neste caso, nenhum resultado será retornado dos índices semânticos nesta coluna.
[TOP]