Indexação de texto completo e processo de consulta

O componente de indexação de pesquisa de texto completo é responsável pela população inicial de um índice de texto completo, e pela atualização subseqüente desse índice quando ocorrem modificações de dados nas tabelas indexadas de texto completo.

Processo de indexação de texto completo

Quando uma população de texto completo (também conhecida como rastreamento) é iniciada, o mecanismo de texto completo entrega grandes lotes de dados à memória e notifica o host do daemon de filtro. O host filtra e o Word divide os dados e converte os dados convertidos em listas de palavras invertidas. A pesquisa de texto completo pega os dados convertidos nas listas de palavras, processa-os para remover palavras irrelevantes e mantém as listas de palavras para um lote em um ou mais índices invertidos.

Durante a indexação de dados armazenados em um varbinary(max) ou coluna image, o filtro, que implementa a interface IFilter , extrai texto com base no formato de arquivo especificado para aqueles dados (por exemplo, Microsoft Word). Em alguns casos, os componentes de filtro requerem que os dados de varbinary(max) ou de image sejam gravados fora da pasta de dados do filtro, em vez de serem postos na memória.

Como parte do processamento, os dados de texto reunidos são passados por um separador de palavras para que o texto seja separado em tokens individuais ou palavras-chave. A linguagem usada para geração de tokens é especificada no nível da coluna, podendo ser identificada em dados varbinary(max), image ou xml, pelo componente de filtro.

Processamentos adicionais podem ser realizados para remover palavras irrelevantes e para normalizar os tokens antes de eles serem armazenados no índice de texto completo ou em um fragmento de índice.

Quando a população se completa, um processo final de mesclagem é disparado, mesclando os fragmentos de índice em um índice de texto completo mestre. Isso resulta em um aprimoramento do desempenho de consultas, uma vez que apenas o índice necessita ser consultado, em vez de uma série de fragmentos de índice, e melhores estatísticas de pontuação podem ser usadas para classificação de relevância.

ObservaçãoObservação

A mesclagem mestra pode ser de E/S intensiva, porque grandes quantidades de dados precisam ser gravados e lidos quando os fragmentos de índice são mesclados, embora isso não bloqueie as consultas de entrada. Além disso, a mesclagem mestra de uma grande quantidade de dados pode criar uma transação demorada, atrasando o truncamento do log de transações durante o ponto de verificação. Nesse caso, o log de transações pode crescer significativamente sob o modelo de recuperação completa. Como prática recomendada, verifique se o log de transações contém espaço suficiente para uma transação demorada antes de reorganizar um índice de texto completo grande em um banco de dados que usa o modelo de recuperação completa. Para obter mais informações, consulte Gerenciando o tamanho do arquivo de logs de transações.

Processo de consulta de texto completo

O processador de consultas passa as partes do texto completo de uma consulta para o Mecanismo de Texto Completo para processamento. O Mecanismo de Texto Completo executa a quebra de palavras e, opcionalmente, expansões do dicionário de sinônimos, lematização e processamento de palavras irrelevantes (palavras de ruído). Em seguida, as partes de texto completo da consulta são representadas na forma de operadores SQL, principalmente como STVFs (funções com valor de tabela de fluxo). Durante a execução da consulta, essas STVFs acessam o índice invertido para recuperar os resultados corretos. Os resultados são retornados para o cliente neste momento ou processados mais um pouco antes de serem retornados ao cliente.