Architecture de la recherche en texte intégral

La recherche en texte intégral est rendue possible par le Moteur d'indexation et de recherche en texte intégral. Le Moteur d'indexation et de recherche en texte intégral assure deux rôles : prise en charge de l'indexation et prise en charge des requêtes.

À compter de SQL Server 2008, l'architecture de la recherche en texte intégral est constituée des processus suivants :

  • Processus SQL Server (sqlservr.exe)

    Note

    Le service MSFTESQL n'existe pas dans SQL Server 2008 et versions ultérieures. Les tâches de recherche en texte intégral qu'effectuait le service MSFTESQL dans SQL Server 2005 et les versions antérieures sont maintenant effectuées par le processus SQL Server.

  • Processus hôte de démon de filtre (fdhost.exe)

    Pour des raisons de sécurité, à compter de SQL Server 2008, les filtres sont chargés par des processus séparés appelés hôtes de démon de filtre. Une instance de serveur utilise un processus multithread pour tous les filtres multithreads et un processus monothread pour tous les filtres monothreads.

    Note

    fdhost.exe remplace le démon de filtre du Moteur d'indexation et de recherche en texte intégral (msftefd.exe) de SQL Server 2005 et versions antérieures.

    Les processus fdhost.exe sont créés par un service du lanceur FDHOST (MSSQLFDLauncher) et s'exécutent avec les informations d'identification de sécurité du compte du service du lanceur FDHOST. Par conséquent, ce service doit être en cours d'exécution pour que l'indexation de texte intégral et l'exécution de requêtes de texte intégral puissent fonctionner. Pour plus d'informations sur la configuration de compte pour ce service, consultez Procédure : définir le compte de service de lancement FDHOST (MSSQLFDLauncher) pour la recherche en texte intégral (Gestionnaire de configuration SQL Server).

Ces processus contiennent les composants de l'architecture de recherche en texte intégral. Ces composants et leurs relations sont résumés dans l'illustration ci-dessous. Les composants sont décrits après l'illustration.

architecture de recherche en texte intégral

Processus SQL Server

La recherche en texte intégral utilise les composants suivants du processus SQL Server :

  • Tables utilisateur

    Ces tables contiennent les données à indexer en texte intégral.

  • Outil d'extraction de texte intégral

    L'outil d'extraction de texte intégral fonctionne avec les threads d'analyse de texte intégral. Il est responsable de la planification et du pilotage du remplissage des index de texte intégral, ainsi que de la surveillance des catalogues de texte intégral.

    Note

    À compter de SQL Server 2008, un catalogue de texte intégral est un objet virtuel qui n'appartient à aucun groupe de fichiers. Un catalogue de texte intégral est un concept logique qui fait référence à un groupe d'index de recherche en texte intégral.

  • Fichiers du dictionnaire des synonymes

    Ces fichiers contiennent des synonymes de termes de recherche. Pour plus d'informations, consultez Configuration du dictionnaire des synonymes.

  • Objets de la liste de mots vides

    Les objets de la liste de mots vides contiennent une liste de mots courants qui ne sont pas utiles pour la recherche. Pour plus d'informations, consultez Mots vides et listes de mots vides.

    Note

    Les objets de la liste de mots vides remplacent les fichiers de mots parasites de SQL Server 2005 et versions antérieures.

  • Processeur de requêtes SQL Server

    Le processeur de requêtes compile et exécute des requêtes SQL. Si une requête SQL inclut une requête de recherche en texte intégral, la requête est envoyée au Moteur d'indexation et de recherche en texte intégral, à la fois pendant la compilation et pendant l'exécution. Le résultat de la requête est opposé à l'index de texte intégral. Pour plus d'informations, consultez Moteur d'indexation et de recherche en texte intégral.

  • Moteur d'indexation et de recherche en texte intégral

    Le Moteur d'indexation et de recherche en texte intégral de SQL Server est maintenant entièrement intégré au processeur de requêtes. Le Moteur d'indexation et de recherche en texte intégral compile et exécute les requêtes de texte intégral. Dans le cadre de l'exécution de la requête, le Moteur d'indexation et de recherche en texte intégral peut recevoir des entrées provenant du dictionnaire des synonymes et de la liste de mots vides. Dans SQL Server 2008 et versions ultérieures, le Moteur d'indexation et de recherche en texte intégral pour SQL Server s'exécute à l'intérieur du processeur de requêtes SQL Server.

  • Générateur d'index (indexeur)

    Le générateur d'index crée la structure utilisée pour stocker les jetons indexés.

  • Gestionnaire du démon de filtre

    Le gestionnaire du démon de filtre est responsable de la surveillance de l'état du processus du démon du filtre du Moteur d'indexation et de recherche en texte intégral.

Hôte de démon de filtre

L'hôte de démon de filtre est un processus démarré par le Moteur d'indexation et de recherche en texte intégral. Il exécute les composants de recherche en texte intégral ci-dessous, chargés d'accéder aux données des tables, de les filtrer et d'en effectuer l'analyse lexicale, ainsi que d'effectuer l'analyse lexicale et d'identifier la racine des mots de l'entrée de requête.

Les composants de l'hôte de démon de filtre sont les suivants :

  • Gestionnaire de protocole

    Ce composant extrait les données de la mémoire en vue de leur traitement ultérieur et accède aux données d'une table utilisateur de la base de données spécifiée. Il est chargé, entre autres, de collecter les données des colonnes indexées en texte intégral et de transmettre ces données à l'hôte de démon de filtre, qui applique le filtrage et l'analyse lexicale, si besoin est. .

  • Filtres

    Un filtrage peut être nécessaire sur certains types de données avant que les données d'un document puissent être indexées en texte intégral, y compris les données des colonnes varbinary, varbinary(max), image ou xml. Le filtre utilisé pour un document donné dépend du type de celui-ci. Ainsi, différents filtres sont utilisés pour les documents Microsoft Word (.doc), les documents Microsoft Excel (.xls) et les documents XML (.xml). Ensuite, le filtre extrait des segments de texte du document, en supprimant la mise en forme incorporée et en conservant le texte et, éventuellement, les informations sur l'emplacement du texte. Un flux d'informations textuelles est ainsi généré. Pour plus d'informations, consultez Filtres de recherche en texte intégral.

  • Analyseurs lexicaux et générateurs de formes dérivées

    Un analyseur lexical est un composant spécifique d'une langue qui recherche des limites de mots en utilisant les règles lexicales de cette langue (analyse lexicale). Chaque analyseur lexical est associé à un composant de générateur de formes dérivées spécifique d'une langue qui conjugue des verbes et effectue des expansions fléchies. Au moment de l'indexation, l'hôte de démon de filtre utilise un analyseur lexical et un générateur de formes dérivées pour effectuer l'analyse linguistique sur les données textuelles d'une colonne de table donnée. La langue associée à une colonne de table dans l'index de recherche en texte intégral détermine l'analyseur lexical et le générateur de formes dérivées à utiliser pour indexer la colonne. Pour plus d'informations, consultez Analyseurs lexicaux et générateurs de formes dérivées.

    Note

    Pour plus d'informations sur tous les composants linguistiques de texte intégral, consultez Configuration des composants linguistiques de texte intégral.