Arquitetura da pesquisa de texto completo
A pesquisa de texto completo é ativada pelo Mecanismo de Texto Completo. O Mecanismo de Texto Completo tem duas funções: suporte a indexação e suporte a consulta.
A partir do SQL Server 2008, a arquitetura de pesquisa de texto completo é formada pelos seguintes processos:
O processo do SQL Server (sqlservr.exe)
Observação O serviço MSFTESQL não existe no SQL Server 2008 e em versões posteriores. Tarefas de texto completo que eram executadas pelo serviço MSFTESQL no SQL Server 2005 e em versões anteriores agora são executadas pelo processo do SQL Server.
O processo de host do daemon de filtro (fdhost.exe)
Por motivo de segurança, a partir do SQL Server 2008, os filtros são carregados por processos separados que são chamados de hosts do daemon de filtro. Uma instância de servidor usa um processo multi-threaded para todos os filtros multi-threaded e um processo de thread único para todos os filtros de thread único.
Observação fdhost.exe substitui o daemon de filtro do Mecanismo de Texto Completo (msftefd.exe) do SQL Server 2005 e de versões anteriores.
Os processos fdhost.exe são criados por um serviço Iniciador FDHOST (MSSQLFDLauncher) e executados sob as credenciais de segurança da conta deste serviço. Por isso, este serviço deve estar em execução para que a indexação de texto completo e a consulta de texto completo funcionem. Para obter informações sobre como configurar a conta de serviço para este serviço, consulte Como definir a conta de serviço do Iniciador FDHOST (MSSQLFDLauncher) para pesquisa de texto completo (SQL Server Configuration Manager).
Esses processos contêm os componentes da arquitetura de pesquisa de texto completo. Esses componentes e suas relações são resumidas na ilustração a seguir. Os componentes são descritos após a ilustração.
Processo SQL Server
A pesquisa de texto completo usa os seguintes componentes do processo do SQL Server:
Tabelas de usuário
Essas tabelas contêm os dados para serem indexados com texto completo.
Gatherer de texto completo
O gatherer de texto completo funciona com os threads de rastreamento de texto completo. Ele é responsável por agendar e orientar a população de índices de texto completo e também por monitorar os catálogos de texto completo.
Observação A partir do SQL Server 2008, um catálogo de texto completo é um objeto virtual e não pertence a nenhum grupo de arquivos. Um catálogo de texto completo é um conceito lógico que faz referência a um grupo de índices de texto completo.
Arquivos de dicionário de sinônimos
Esses arquivos contêm sinônimos de termos de pesquisa. Para obter mais informações, consulte Configuração do Thesaurus.
Objetos da lista de palavras irrelevantes (stoplist)
Os objetos da lista de palavras irrelevantes contêm uma lista de palavras comuns que não são úteis para a pesquisa. Para obter mais informações, consulte Palavras irrelevantes e listas de palavras irrelevantes.
Observação Os objetos da lista de palavras irrelevantes substituem os arquivos de palavra de ruído do SQL Server 2005 e versões anteriores.
Processador de consultas SQL Server
O processador de consulta compila e executa consultas SQL. Se uma consulta SQL incluir uma consulta de pesquisa de texto completo, a consulta será enviada ao Mecanismo de Texto Completo, durante a compilação e durante a execução. O resultado da consulta é comparado com o índice de texto completo. Para obter mais informações, consulte Mecanismo de Texto Completo.
Mecanismo de Texto Completo
Agora o Mecanismo de Texto Completo do SQL Server está totalmente integrado ao processador de consultas. O Mecanismo de Texto Completo compila e executa consultas de texto completo. Como parte da execução da consulta, o Mecanismo de Texto Completo pode receber entrada do dicionário de sinônimos e da lista de palavras irrelevantes. No SQL Server 2008 e em versões posteriores, o Mecanismo de Texto Completo para SQL Server é executado dentro do processador de consulta do SQL Server.
Gravador de índice (indexador)
O gravador de índice cria a estrutura usada para armazenar os tokens indexados.
Gerenciador de daemon de filtro
O gerenciador de daemon de filtro é responsável por monitorar o status do host do daemon de filtro do Mecanismo de Texto Completo.
Host do daemon de filtro
O host do daemon de filtro é um processo que é iniciado pelo Mecanismo de Texto Completo. Ele executa os seguintes componentes de pesquisa de texto completo que são responsáveis por acessar, filtrar e separar palavras de dados de tabelas, bem como por separar palavras e lematizar a entrada da consulta:
Os componentes do host do daemon de filtro são os seguintes:
Manipulador de protocolo
Esse componente extrai os dados da memória para processamento adicional e acessa dados de uma tabela de usuário de um banco de dados especificado. Uma de suas responsabilidades é coletar dados das colunas que estão sendo indexadas com texto completo e transmiti-los ao host do daemon de filtro, que aplicará a filtragem e o separador de palavras conforme exigido. .
Filtros
Alguns tipos de dados requerem filtragem para que os dados contidos em um documento possam ser indexados com texto completo, inclusive dados em colunas varbinary, varbinary(max), image ou xml. O filtro usado para um dado documento depende de seu tipo de documento. Por exemplo, são usados filtros diferentes para documentos do Microsoft Word (.doc), do Microsoft Excel (.xls) e no formato XML (.xml). O filtro extrai partes de texto do documento, removendo a formatação incorporada e mantendo o texto e, potencialmente, as informações sobre a posição deste. O resultado é um fluxo de informações textuais. Para obter mais informações, consulte Filtros da pesquisa de texto completo.
Separadores de palavras e lematizadores
Um separador de palavras é um componente específico do idioma que encontra limites de palavras com base nas regras lexicais de um dado idioma (separação de palavras). Cada separador de palavras é associado a um componente lematizador específico do idioma, que conjuga verbos e executa expansões flexionadas. No momento da indexação, o host do daemon de filtro usa um separador de palavras e um lematizador para executar a análise lingüística dos dados textuais de uma determinada coluna de tabela. O idioma associado a uma coluna de tabela no índice de texto completo determina qual separador de palavras e qual lematizador são usados para indexar a coluna. Para obter mais informações, consulte Separadores de palavras e lematizadores.
Observação Para obter informações sobre todos os componentes lingüísticos de texto completo, consulte Configurando componentes lingüísticos de texto completo.
Consulte também