Introdução ao Full-Text Search
Aplica-se a:SQL Server
Banco de Dados SQL do Azure
Instância Gerenciada SQL do Azure
Os bancos de dados do SQL Server são habilitados para texto completo por padrão. No entanto, antes de executar consultas de texto completo, você deve criar um catálogo de texto completo e criar um índice de texto completo nas tabelas ou exibições indexadas que deseja pesquisar.
Configurar a pesquisa de texto completo em duas etapas
Há duas etapas básicas para configurar a pesquisa de texto completo:
- Crie um catálogo de texto completo.
- Crie um índice de texto completo nas tabelas ou vistas indexadas que pretenda pesquisar.
Cada índice de texto completo deve pertencer a um catálogo de texto completo. Você pode criar um catálogo de texto separado para cada índice de texto completo ou pode associar vários índices de texto completo a um determinado catálogo. Um catálogo de texto completo é um objeto virtual e não pertence a nenhum grupo de arquivos. O catálogo é um conceito lógico que se refere a um grupo de índices de texto completo.
Observação
Essas etapas pressupõem que você instalou os componentes opcionais do Full-Text Search quando instalou o SQL Server. Caso contrário, você precisará executar a Instalação do SQL Server novamente para adicioná-los.
Configurar a pesquisa de texto completo com um assistente
Para configurar a pesquisa de texto completo usando um assistente, consulte o Assistente de Indexação Full-Text.
Configurar a pesquisa de texto completo com Transact-SQL
O exemplo de duas partes a seguir cria um catálogo de texto completo chamado AdvWksDocFTCat
no banco de dados de exemplo AdventureWorks e, em seguida, cria um índice de texto completo na tabela Document
no banco de dados de exemplo. Esta instrução cria o catálogo de texto completo no diretório padrão especificado durante a instalação do SQL Server. A pasta chamada AdvWksDocFTCat
está no diretório padrão.
Para criar um catálogo de texto completo chamado
AdvWksDocFTCat
, o exemplo utiliza a instrução CREATE FULLTEXT CATALOG :USE AdventureWorks; GO CREATE FULLTEXT CATALOG AdvWksDocFTCat;
Para obter mais informações, consulte Criar e gerenciar catálogos Full-Text.
Antes de criar um índice de texto completo na tabela Documento, verifique se a tabela tem um índice exclusivo, de coluna única e não anulável. A seguinte instrução CREATE INDEX cria um índice único,
ui_ukDoc
, na coluna DocumentID da tabela Documento:CREATE UNIQUE INDEX ui_ukDoc ON Production.Document(DocumentNode);
Remova o índice de texto completo existente na tabela
Document
usando a seguinte instrução DROP FULLTEXT INDEX.DROP FULLTEXT INDEX ON Production.Document GO
Depois de ter uma chave exclusiva, você pode criar um índice de texto completo na tabela
Document
usando a instrução CREATE FULLTEXT INDEX a seguir.CREATE FULLTEXT INDEX ON Production.Document ( Document --Full-text index column name TYPE COLUMN FileExtension --Name of column that contains file type information Language 2057 --2057 is the LCID for British English ) KEY INDEX ui_ukDoc ON AdvWksDocFTCat --Unique index WITH CHANGE_TRACKING AUTO --Population type; GO
A COLUNA TYPE definida neste exemplo especifica a coluna tipo na tabela que contém o tipo do documento em cada linha da coluna 'Documento' (que é do tipo binário). A coluna de tipo armazena a extensão de arquivo fornecida pelo usuário - ".doc", ".xls", e assim por diante - do documento em uma determinada linha. O mecanismo de Full-Text usa a extensão de arquivo em uma determinada linha para invocar o filtro correto a ser usado para analisar os dados nessa linha. Depois que o filtro analisa os dados binários da linha, o separador de palavras especificado analisa o conteúdo. (Neste exemplo, o separador de palavras para Inglês Britânico é usado.) Para obter mais informações, consulte Configurar e gerir filtros de pesquisa para.
Para obter mais informações, consulte Criar e gerenciar índices de Full-Text.
Escolher opções para um índice de texto completo
Escolha um idioma
Para obter informações sobre a escolha do idioma da coluna, consulte Escolha um Idioma ao Criar um Índice Full-Text.
Escolha um grupo de arquivos
O processo de construção de um índice de texto completo é bastante intensivo em E/S. Em resumo, ele consiste em ler dados do SQL Server e, em seguida, propagar os dados filtrados para o índice de texto completo. Como prática recomendada, localize um índice de texto completo no grupo de arquivos de banco de dados que seja melhor para maximizar o desempenho de E/S ou localize os índices de texto completo em um grupo de arquivos diferente em outro volume.
Escolha um catálogo de texto completo
Recomendamos associar tabelas com as mesmas características de atualização (como pequeno número de alterações versus grande número de alterações, ou tabelas que mudam com frequência durante um determinado período do dia) juntas no mesmo catálogo de texto completo. Ao configurar agendas de população de catálogo de texto completo, os índices de texto completo permanecem síncronos com as tabelas sem afetar adversamente o uso de recursos do servidor de banco de dados durante períodos de alta atividade do banco de dados.
Considere as seguintes diretrizes:
Se você estiver indexando uma tabela com milhões de linhas, atribua a tabela ao seu próprio catálogo de texto completo.
Considere a quantidade de alterações que ocorrem nas tabelas que estão sendo indexadas em texto completo, bem como o número total de linhas. Se o número total de linhas que estão sendo alteradas, juntamente com o número de linhas na tabela presente durante a última população de texto completo, representar milhões de linhas, atribua a tabela ao seu próprio catálogo de texto completo.
Associar um índice exclusivo
Selecione sempre o menor índice exclusivo disponível para sua chave exclusiva de texto completo. (Um índice baseado em números inteiros de 4 bytes é o ideal.) Isso reduz significativamente os recursos exigidos pelo serviço de Pesquisa da Microsoft no sistema de arquivos. Se a chave primária for grande (mais de 100 bytes), considere escolher outro índice exclusivo na tabela (ou criar outro índice exclusivo) como a chave exclusiva de texto completo. Caso contrário, se o tamanho exclusivo da chave de texto completo exceder o tamanho máximo permitido (900 bytes), a população de texto completo não poderá continuar.
Associar uma lista de exclusão
Um de stoplist é uma lista de palavras de paragem, também conhecidas como palavras de ruído. Uma stoplist é associada a cada índice de texto completo, e as palavras nessa stoplist são aplicadas a consultas de texto completo nesse índice. Por padrão, a lista de paradas do sistema é associada a um novo índice de texto completo. Você também pode criar e usar sua própria lista de paradas.
Por exemplo, a seguinte instrução CREATE FULLTEXT STOPLIST Transact-SQL cria uma nova lista de paradas de texto completo chamada myStoplist copiando da lista de paradas do sistema:
CREATE FULLTEXT STOPLIST myStoplist FROM SYSTEM STOPLIST;
GO
A seguinte instrução ALTER FULLTEXT STOPLIST Transact-SQL altera uma lista de paradas chamada myStoplist, adicionando a palavra 'en', primeiro para espanhol e depois para francês:
ALTER FULLTEXT STOPLIST myStoplist ADD 'en' LANGUAGE 'Spanish';
ALTER FULLTEXT STOPLIST myStoplist ADD 'en' LANGUAGE 'French';
GO
Para obter mais informações, consulte Configurar e gerir palavras de paragem e listas de paragem para Full-Textde pesquisa.
Atualizar um índice de texto completo
Como os índices normais do SQL Server, os índices de texto completo podem ser atualizados automaticamente à medida que os dados são modificados nas tabelas associadas. Este é o comportamento padrão. Como alternativa, poderá manter os seus índices de texto completo up-to-date de forma manual ou em intervalos agendados especificados. Preencher um índice de texto completo pode ser demorado e consome muitos recursos. Portanto, a atualização do índice geralmente é executada como um processo assíncrono que é executado em segundo plano e mantém o índice de texto completo atualizado após modificações na tabela base.
A atualização de um índice de texto completo imediatamente após cada alteração na tabela base também consome muitos recursos. Portanto, se você tiver uma alta taxa de atualização/inserção/exclusão, poderá ocorrer alguma degradação no desempenho da consulta. Se isso ocorrer, considere agendar atualizações manuais de controle de alterações para acompanhar as inúmeras alterações de tempos em tempos, em vez de competir com consultas por recursos.
Para obter mais informações, consulte Preencher índices Full-Text.
Próximos passos
Depois de configurar o SQL Server Full-Text Search, você estará pronto para executar consultas de texto completo. Para obter mais informações, consulte Consulta com PesquisaFull-Text.