Bewise

Nous développons... votre avance

Indexer du contenu HTML dans SQL Server 2008

DGD
05/01/2009 - Jocelyn Tricoire

L’exemple suivant montre comment configurer SQL Server 2008 afin d’effectuer une recherche Full Text Search sur un champ de la base destiné à stocker du code HTML. Le principe est le même pour indexer des .doc, .pdf, etc.

Code HTML d’exemple

<html xmlns="http://www.w3.org/1999/xhtml"> <head><title>Bewise</title></head> <body> <span class="important">Bewise, nous développons votre avance</span> </body> </html>

Avant toute chose, une nouveauté de iFTS (integrated Full Text Search – le nouveau nom de la recherche plein texte de SQL Server) nous permet de tester comment le Word Breaker effectue son découpage sur ce texte HTML :

sys.dm_fts_parser('query_string', lcid, stoplist_id, accent_sensitivity)

(http://msdn.microsoft.com/en-us/library/cc280463.aspx)

SELECT * FROM sys.dm_fts_parser ( '"<html xmlns=''http://www.w3.org/1999/xhtml''><head><title>Bewise</title></head><body><span class=''important''>Bewise, nous développons votre avance</span></body></html>"', 1033, 0, 0)

dm_fts_parser() results

L’ensemble des balises HTML et classes CSS ne sont pas considérées comme des NOISE WORD. Ils seront donc pris en compte dans le cas d’une recherche. Une solution à ce problème pourrait être d’ajouter à notre Stop List l’ensemble des balises html connues ; mais cela ne règlerait pas le problème des classes et autres styles CSS.

La solution la plus optimisée consiste en fait à profiter des iFilters supportés par SQL 2008 (http://msdn.microsoft.com/en-us/library/ms142499.aspx). Pour activer l’ensemble des filtres disponibles sur votre instance l’instruction suivante doit être exécutée :

EXEC sp_fulltext_service @action='load_os_resources', @value=1;

L’ensemble des filtres dispos sont récupérables avec l’instruction suivante :

EXEC sp_help_fulltext_system_components 'filter';

On y trouve un filtre pour les extensions .html, .aspx, etc.

Afin de pouvoir « filtrer » notre HTML lors de recherche Full Text, plusieurs points sont à suivre et risque de modifier votre modèle de données s’il est déjà en place. En effet, les filtres ne s’appliquent qu’à des champs de type XML, image ou varbinary !

Dans notre exemple il faut donc prendre soin de stocker notre HTML dans un champ de type VARBINARY(MAX) et surtout pas NVARCHAR(MAX).

Attention ! L’encodage à utiliser pour stocker notre HTML doit être impérativement de l’UTF-8 ! Autrement, le word breaker ne sera pas capable d’interpréter le flux binaire correctement.

Ensuite, il va falloir « typer » notre champ contenant le HTML afin que la Full Text Search utilise le filtre désiré. Autrement dit, faire le lien entre notre champ binaire et le filtre désiré. Pour ce faire, on va ajouter une colonne supplémentaire à notre table. Cette colonne doit être de type char ou nvarchar et va contenir le nom (componentname) du filtre choisi. Dans notre cas c’est « .html »

Lors de la création de l’index Full Text on précise alors le nom de la colonne de notre table qui contient le type de filtre à utiliser. C’est le paramètre 'type_column_name'. Cela peut être fait via Management Studio en Design sur la table.

sp_fulltext_column [ @tabname = ] 'qualified_table_name' , [ @colname = ] 'column_name' , [ @action = ] 'action' [ , [ @language = ] 'language' ] [ , [ @type_colname = ] 'type_column_name' ]

http://msdn.microsoft.com/en-us/library/aa933405(SQL.80).aspx

Une fois le catalog Full Text reconstruit, un appel FREETEXT, FREETEXTTABLE, CONTAINS ou CONTAINSTABLE sur notre champ binaire va faire appel au filtre HTML et nous filtrer correctement tout ce qui est balises ou style.

> Tous les articles

Commentaires

aucun commentaire
Page 1/1
   
Connexion
  • Accueil
  • Plan du site
  • Contact
Bewise TV, Blog technique, Webcasts...

Votre carrière et nous

  • Nos offres
  • Votre candidature
Ignorer les liens de navigation > Accueil > Nos Métiers > Décisionnel et Gestion des Données > Détail Article
Ignorer les liens de navigation
Nous
Nos Métiers
Vous Former
Nos Evénements
Nos Références
Nos Activités
Nos Certifications
Nos Chiffres
Le Groupe
Nos Partenaires
On Parle de Nous
Votre Carrière et Nous
Nous Contacter
Défiler vers le haut
Défiler vers le bas
Administration, Système et Communication
Architecture, Méthodes, Industrialisation
Décisionnel et Gestion des Données
Nouvelles Interfaces Utilisateurs
Portail et Travail Collaboratif
Solutions Langages et Framework
Solutions Web Avancées
Défiler vers le haut
Défiler vers le bas
Nos cours
Le Planning
Offres promotionnelles
Défiler vers le haut
Défiler vers le bas
TechDays'12
TechLunch
Windows 8 Camp
Défiler vers le haut
Défiler vers le bas
  • Infos légales
  • Lettre du Regional Director
  • Revue de presse