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çãoObservaçã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çãoObservaçã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.

arquitetura da pesquisa de texto completo

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çãoObservaçã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çãoObservaçã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çãoObservação

    Para obter informações sobre todos os componentes lingüísticos de texto completo, consulte Configurando componentes lingüísticos de texto completo.