APSQL

Le service d'indexation de texte intégral

L'objectif de ce service est de fournir une indexation sur les documents de type texte stockées dans la base. Un document de type texte est représenté par une colonne de type caractère.

Le service d'indexation de texte intégral, utilise une structure différente des index habituellement présents dans SQL Server, en effet les informations relatives à cet index sont stockées à part dans un catalogue de texte intégral. Chaque catalogue peut contenir un ou plusieurs index.

Afin d'obtenir un index significatif tout en minimisant sa taille, il est nécessaire de réduire le nombre de terme indexé. Pour cela tous les termes contenu dans le fichier noiseFRA.txt (habituellement situé dans le dossier C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\FTData). Ce fichier texte est librement éditable afin de pouvoir modifier la liste des termes dénué de sens en y ajoutant les termes couramment employés dans les différents documents comme le nom de la société, des termes ou des acronymes spécifiques au métier...

La mise en place d'un tel type d'index s'effectue de la façon suivante:

  1. Démarrage du service
  2. Création du catalogue
  3. Définition de l'index
  4. Utilisation de l'index

Démarrage du service

    Le service Recherche de texte intégral peut être démarré depuis:
  • SQL Server Management Studio: Depuis le dossier Gestion associé à votre instance sléectionner Démarrer dans le menu contextuel associé au noeud Recherche de texte intégral
  • SQL Server Configuration Manager: démarrer le service SQL ServerFullText Search

Le service doit s'exécuter dans le contexte d'un compte qui dispose des privilèges nécessaires pour permettre la création du catalogue (fichier dans un dossier du serveur).

Création du catalogue

Le catalogue est défini au niveau de la base. Pour une base de données tous les catalogues sont visibles à partir du dossier Stockage - Catalogue de texte intégral.

Un catalogue ne peut être défini que si la recherche de texte intégrale est activée au niveau de la bas, ce qui est fait par défaut dans SQL Server 2005. Si ce n'est pas le cas il est nécessaire d'exécuter la procédure sp_fulltext_database de la façon suivante

	use club;
	go
	exec sp_fulltext_database @action='enable'

Pour un créer un nouveau catalogue, il est simplement nécessaire de sélectionner l'option Nouveau catalogue de texte intégrale depuis le menu contextuel associé à ce dossier.

Demande de création d'un catalogue de texte intégral

La fenêtre de définition du nouveau catalogue est alors affichée. Il est nécessaire de fournir un nom ainsi qu'un emplacement

Définition de l'index

Contrairement aux index classiques qui sont définis à partir de la table. les index de texte intégral sont définis à partir du catalogue. Seul les tables possédant un identifiant unique (sous forme de clé primaire ou bien contrainte d'unicité) peuvent participer à ce type d'indexation. Le remplissage de l'index peut être immédiat ou bien différée.

Les colonnes à indexées sont sélectionnées depuis la page Table/vues de la fenêtre des propriétés du catalogue.

Depuis la page planification il est possible de planifier le remplissage de l'index. En effet un colonne de type texte de grande dimension va nécessité un temps important pour son indexation. Aussi est il plus judicieux de planifier cette opération à une période de moindre activité.

Utilisation de l'index

L'utilisation de cet index est transparent, il n'y a pas d'opérations particulières à exécuter pour l'utiliser. Comme pour les index classiques, c'est l'optimiseur de requête qui se charge de trouver la façon optimale de manipuler les données pour fournir le plus rapidement possibles les valeurs.

Le gain est toutefois très important lors de l'utilisation des méthodes de recherche dans les champs texte tels que CONTAINS, CONTAINSTABLE, FREETEXT et FREETEXTTABLE.