Processus d'indexation et d'interrogation de texte intégral

Le composant d'indexation de la recherche de texte intégral est responsable du remplissage initial de l'index de texte intégral ainsi que de la mise à jour ultérieure de cet index lors de la modification des données contenues dans les tables indexées en texte intégral. L'architecture du mécanisme de collecte des données de texte intégral a été améliorée dans Microsoft SQL Server 2005 afin de rendre plus efficace le processus d'indexation de texte intégral et d'obtenir des gains de performances significatifs.

Processus d'indexation de texte intégral

Lors du démarrage d'un remplissage de texte intégral (également appelé analyse), le moteur de base de données effectue l'envoi (push) de grands lots de données en mémoire et indique au service du moteur de texte intégral Microsoft pour SQL Server (MSFTESQL) de commencer l'indexation. Le service MSFTESQL indexe les données de type caractère et les données binaires mises en forme d'une ou de plusieurs colonnes d'une table. À l'aide d'un composant de gestionnaire de protocole, le moteur de texte intégral effectue l'extraction des données (pull) de la mémoire afin de les traiter de manière plus avancée, ce qui aboutit à l'index de texte intégral.

Lors de l'indexation des données stockées dans une colonne varbinary(max) ou image, le filtre qui implémente l'interface IFilter extrait le texte en fonction du format de fichier spécifié pour ces données (par exemple Microsoft Word). Dans certains cas, les composants de filtrage nécessitent que les données varbinary(max) ou image soient écrites dans le répertoire Temp du compte de service, au lieu d'être envoyées (push) en mémoire.

Dans le cadre du traitement, les données de texte collectées sont transmises à un séparateur de mots pour décomposer le texte en jetons individuels ou mots clés. La langue utilisée pour la création de jetons peut être spécifiée au niveau de la colonne ou être identifiée parmi les données varbinary(max), image ou xml par le composant de filtrage.

Un traitement supplémentaire peut être effectué pour supprimer les mots non significatifs et normaliser les jetons avant leur stockage dans l'index de texte intégral ou un fragment d'index.

À la fin d'un remplissage, une fusion finale est déclenchée ; les fragments d'index sont fusionnés entre eux dans un index de texte intégral principal. Il en résulte une amélioration des performances des requêtes dans la mesure où seul l'index principal doit être interrogé au lieu des fragments d'index ; par ailleurs, les statistiques de score sont plus appropriées pour un classement par pertinence.

ms142591.note(fr-fr,SQL.90).gifRemarque :
La fusion principale peut nécessiter de nombreuses entrées/sorties, car de grandes quantités de données doivent être écrites et lues lors de la fusion des fragments d'index. Toutefois, cela ne bloque pas les requêtes entrantes.

Processus d'interrogation de texte intégral

Une requête de texte intégral envoyée depuis un client est dirigée vers le processeur de requêtes SQL Server du processus SQL Server. Le processeur de requêtes la transmet au composant de requête de texte intégral, qui crée une arborescence de commandes OLE DB et l'envoie au service MSFTESQL (Microsoft Full-Text Engine for SQL Server). Dans le processus MSFTESQL, le processeur de requêtes du moteur de texte intégral traite la requête en utilisant des fichiers de dictionnaire de synonymes et de mots non significatifs, ainsi que des séparateurs de mots et des analyseurs morphologiques. Après le traitement de cette requête, le service MSFTESQL renvoie un jeu de résultats au processus SQL Server. Ce jeu de résultats peut servir pour un traitement ultérieur ou être renvoyé au client.

Voir aussi

Concepts

Architecture de la recherche de texte intégral

Autres ressources

Concepts de la recherche de texte intégral

Aide et Informations

Assistance sur SQL Server 2005