Arquitectura de la búsqueda de texto

La búsqueda de texto completo se realiza gracias al motor de texto completo. El motor de texto completo desempeña dos funciones: la indización y las consultas.

A partir de SQL Server 2008, la arquitectura de búsqueda de texto completo consta de los procesos siguientes:

  • Proceso de SQL Server (sqlserver.exe)

    [!NOTA]

    El servicio MSFTESQL no existe en SQL Server 2008 y versiones posteriores. El proceso de SQL Server realiza ahora las tareas de texto completo que antes efectuaba el servicio MSFTESQL en SQL Server 2005 y versiones anteriores.

  • El proceso de host de demonio de filtro (fdhost.exe)

    Por razones de seguridad, a partir de SQL Server 2008, procesos independientes denominados hosts de demonio de filtro cargan los filtros. Una instancia del servidor utiliza un proceso multiproceso para todos los filtros multiproceso y un proceso de un solo subproceso para todos los filtros de un solo subproceso.

    [!NOTA]

    fdhost.exe reemplaza al demonio de filtro del motor de texto completo (msftefd.exe) de SQL Server 2005 y versiones anteriores.

    El servicio iniciador de FDHOST (MSSQLFDLauncher) crea los procesos de fdhost.exe, que se ejecutan con las credenciales de seguridad de la cuenta de servicio del iniciador de FDHOST. Por consiguiente, este servicio se debe estar ejecutando para que la indización de texto completo y la consulta de texto completo funcionen. Para obtener información sobre cómo configurar la cuenta para este servicio, vea Cómo establecer la cuenta de servicio del iniciador de FDHOST (MSSQLFDLauncher) para la búsqueda de texto completo (Administrador de configuración de SQL Server).

Estos procesos contienen los componentes de la arquitectura de búsqueda de texto completo. Estos componentes y sus relaciones se resumen en la ilustración siguiente. Los componentes se describen después de la ilustración.

arquitectura de la búsqueda de texto completo

Proceso de SQL Server

La búsqueda de texto completo utiliza los componentes siguientes del proceso SQL Server:

  • Tablas de usuario

    Esta tablas contienen los datos cuyo texto se indizará.

  • Recopilador de texto completo

    El recopilador de texto completo trabaja con los subprocesos de rastreo de texto completo (rellenado). Es responsable de programar y dirigir el rellenado de índices de texto completo, y también de supervisar los catálogos de texto completo.

    [!NOTA]

    Desde SQL Server 2008, un catálogo de texto completo es un objeto virtual y no pertenece a ningún grupo de archivos. Un catálogo de texto completo es un concepto lógico que hace referencia a un grupo de índices de texto completo.

  • Archivos de sinónimos

    Estos archivos contienen sinónimos de los términos de búsqueda. Para obtener más información, vea Configuración del diccionario de sinónimos.

  • Objetos de listas de palabras irrelevantes

    Los objetos de listas de palabras irrelevantes contienen una lista de palabras comunes que no son útiles para la búsqueda. Para obtener más información, vea Palabras irrelevantes y listas de palabras irrelevantes.

    [!NOTA]

    Los objetos de listas de palabras irrelevantes sustituyen a los archivos de palabras irrelevantes de SQL Server 2005 y versiones anteriores.

  • Procesador de consultas de SQL Server

    El procesador de consultas compila y ejecuta consultas SQL. Si una consulta SQL incluye una consulta de búsqueda de texto completo, la consulta se envía al motor de texto completo, durante la compilación y durante la ejecución. El resultado de la consulta se hace coincidir con el índice de texto completo. Para obtener más información, vea Motor de texto completo.

  • Motor de texto completo

    El motor de texto completo de SQL Server se integra ahora totalmente con el procesador de consultas. El motor de texto completo compila y ejecuta consultas de texto completo. Como parte de la ejecución de consultas, el motor de texto completo puede recibir entradas del diccionario de sinónimos y de la lista de palabras irrelevantes. En SQL Server 2008 y versiones posteriores, el motor de texto completo para SQL Server se ejecuta dentro del procesador de consultas de SQL Server.

  • Escritor de índices (indizador)

    El escritor de índices genera la estructura que se utiliza para almacenar los tokens indizados.

  • Administrador del demonio de filtro

    El administrador del demonio de filtro es responsable de supervisar el estado del host de demonio de filtro del motor de texto completo.

Host de demonio de filtro

El host de demonio de filtro es un proceso iniciado por el motor de texto completo. Ejecuta los componentes de búsqueda de texto completo siguientes, que son responsables de obtener acceso, filtrar y separar las palabras de los datos de las tablas, así como de separar las palabras y lematizar la entrada de la consulta:

Los componentes del proceso de host de demonio de filtro son los siguientes:

  • Controlador de protocolo

    Este componente extrae los datos de la memoria para su posterior procesamiento y tiene acceso a los datos de una tabla de usuario de una base de datos especificada. Una de sus responsabilidades es recopilar los datos de las columnas con indización de texto completo y pasarlos al host de demonio de filtro, que aplicará el filtrado y la separación de palabras cuando sea necesario. .

  • Filtros

    Algunos tipos de datos requieren un filtrado para que los datos de un documento puedan indizarse con texto completo, incluso los datos de las columnas varbinary, varbinary(max), image o xml. El filtro utilizado para un documento determinado depende de su tipo de documento. Por ejemplo, se utilizan filtros diferentes para los documentos de Microsoft Word (.doc), de Microsoft Excel (.xls) y XML (.xml). A continuación, el filtro extrae fragmentos de texto del documento, mientras quita el formato incrustado y conserva el texto y, potencialmente, la información sobre la posición del mismo. El resultado es una secuencia de información de texto. Para obtener más información, vea Filtros de búsqueda de texto completo.

  • Separadores de palabras y lematizadores

    Un separador de palabras es un componente específico del idioma que busca los límites de palabras según las reglas léxicas de un idioma determinado (separación de palabras). Cada separador de palabras está asociado a un componente de lematizador específico del idioma que conjuga los verbos y realiza las expansiones flexionales. Al realizar la indización, el host de demonio de filtro utiliza un separador de palabras y un lematizador para realizar el análisis lingüístico de los datos de texto de una columna de la tabla determinada. El lenguaje asociado a una columna de la tabla en el índice de texto completo determina qué separador de palabras y lematizador se utilizan para indizar la columna. Para obtener más información, vea Separadores de palabras y lematizadores.

    [!NOTA]

    Para obtener información sobre todos los componentes lingüísticos de texto completo, vea Configurar componentes lingüísticos de texto completo.