Accueil > Développement d'applications SDX > L'indexation


L'indexation des documents XML

Dernière modification : 2001/11/02 14:20:00     Contact : Martin Sévigny

Introduction

L'indexation de documents à des fins de recherche peut être une entreprise complexe, surtout si on doit indexer des documents textuels et si on veut exploiter la structure. Les outils pour faire ce travail proprement sont rares, en particulier dans le monde des logiciels libres. C'est pourquoi SDX utilise une approche indirecte, approche qui peut s'avérer limitée mais qui possède aussi ses avantages.

Cette approche indirecte consiste à utiliser la structure des documents a priori, c'est-à-dire au moment de leur indexation (plutôt qu'au moment de la requête de recherche). Ainsi, toute la structure des documents XML peut être exploitée en recherche, mais en autant que cela ait été prévu au départ, par le concepteur de la base de documents.

Par exemple, si on veut que les utilisateurs puissent chercher des informations dans un champ auteur, alors il faut avoir prévu un champ auteur dans la configuration de la base de documents, et aussi alimenter ce champ auteur lors de l'indexation des documents.

La définition des champs est faite dans la configuration de la base de documents. L'alimentation de ces champs se fait lors de l'ajout des documents dans une base, en appliquant une transformation XSLT sur ces documents, transformation qui a pour objectif d'extraire les données à indexer du document et les fournir à SDX.

Scénario d'alimentation

Voici un exemple concret d'alimentation d'une base de documents. Supposons que la base contienne la définition de ces champs :

<sdx:fieldList>
  <sdx:field code="texte" type="word" default="1"/>
  <sdx:field code="titre" type="field" brief="1"/>
  <sdx:field code="categorie" type="field" brief="1"/>
</sdx:fieldList>

Dans cette base, nous voulons ajouter ce document :

<?xml version="1.0"?>
<doc id="d001" categorie="a2">
  <titre>Un essai d'indexation</titre>
  <corps>
    <p>L'indexation avec SDX est très facile, mais
       surtout elle est très souple!</p>
  </corps>
</doc>

La feuille de style XSLT qui permet l'indexation pourrait avoir cette allure :

<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
 xmlns:sdx="http://www.culture.gouv.fr/ns/sdx/sdx"
>

  <xsl:template match="/">
    <sdx:document id="{doc/@id}">

      <sdx:field code="texte"><xsl:value-of select="."/></sdx:field>

      <sdx:field code="titre">
        <xsl:value-of select="normalize-space(doc/titre)"/>
      </sdx:field>

      <sdx:field code="categorie">
        <xsl:choose>
          <xsl:when test="doc/@categorie = 'a1'">
            Informatique
          </xsl:when>
          <xsl:when test="doc/@categorie = 'a2'">
            XML
          </xsl:when>
          <xsl:when test="doc/@categorie = 'a3'">
            Java
          </xsl:when>
        </xsl:choose>
      </sdx:field>

    </sdx:document>
  </xsl:template>

</xsl:stylesheet>

L'application de cette feuille de style au document plus haut donnera comme résultat :

<?xml version="1.0"?>
<sdx:document id="d001" xmlns:sdx="http://www.culture.gouv.fr/ns/sdx/sdx">
  <sdx:field code="texte">
   Un essai d'indexation L'indexation avec SDX est très facile, mais
       surtout elle est très souple!
  </sdx:field>
  <sdx:field code="titre">
    Un essai d'indexation
  </sdx:field>
  <sdx:field code="categorie">XML</sdx:field>
</sdx:document>

C'est ce dernier document qui sera donc fourni au moteur d'indexation de SDX. Pour ce document, les champs texte, titre et categorie auront les valeurs indiquées dans le document. Ils seront indexés correctement, en fonction de leur type.

Le point clé est donc la feuille de style pour l'indexation, et le résultat qu'elle doit produire, deux aspects documentés par ailleurs.

Quelques remarques

Le scénario précédent illustre quelques concepts reliés à l'indexation dans SDX. Voici quelques remarques à ce sujet.


e your rights under this License.