<?xml version="1.0"?>
<!DOCTYPE webpage PUBLIC "-//Norman Walsh//DTD Website V2.1b1//EN" "../../../dtd/website.dtd" [
<!ENTITY entrepot SYSTEM "../introduction/entrepots.xml" NDATA XML>
<!ENTITY pipeline SYSTEM "pipeline.xml" NDATA XML>
<!ENTITY schema-index SYSTEM "../../schemas/sdx-document-indexation.xsd" NDATA XML>
<!ENTITY schema-xconf SYSTEM "../../schemas/application-xconf.xsd" NDATA XML>
]>
<webpage id="indexation_thesaurus"> 
  <head> 
	 <title>Utilisation des thésaurus</title> 
	 <titleabbrev>Thésaurus</titleabbrev> 
	 <author> 
		<firstname>Martin</firstname> 
		<surname>Sévigny</surname> 
		<affiliation> 
		  <orgname>AJLSM</orgname> 
		</affiliation> 
	 </author> 
	 <revhistory> 
		<revision> 
		  <revnumber>1.0</revnumber> 
		  <date>2003-05-14</date> 
		</revision> 
	 </revhistory> 
  </head> 
  <para>SDX supporte l'utilisation de thésaurus au moment des requêtes de recherche mais aussi au moment de l'indexation. Nous allons ici décrire le support au moment de l'indexation. L'objectif de cette fonctionnalité est de permettre au développeur de demander à SDX d'injecter automatiquement des termes issus du thésaurus dans certaines champs. Cette injection peut être contrôlée de différentes manières, et son succès repose bien sûr sur la présence d'un thésaurus correctement déclaré et indexé pour l'application en cours.</para><para></para><section><title>Configuration du <emphasis>pipeline</emphasis> d'indexation</title><para>Le <emphasis>pipeline</emphasis> d'indexation doit inclure une étape supplémentaire (en général la dernière) pour que SDX puisse ajouter des termes du thésaurus. En effet, cette fonctionnalité est implémentée comme une transformation qui s'effectue sur le format de sortie du <emphasis>pipeline</emphasis>, en conservant toutes les informations et en ajoutant, si nécessaire, d'autres champs.</para><para>L'exemple suivant illustre comment configurer un pipeline dont l'indexation sera assurée par une transformation XSLT suivie du mécanisme d'ajout de termes de SDX :</para><programlisting>
  &lt;sdx:pipeline&gt;
    &lt;sdx:transformation id="step1" type="XSLT" src="index.xsl"/&gt;
    &lt;sdx:transformation id="thes" type="fr.gouv.culture.sdx.pipeline.FieldExpansionTransformation" th="thes"/&gt;
  &lt;/sdx:pipeline&gt;
</programlisting><para>Dans cet exemple, la première transformation est habituelle. La seconde est effectuée par une transformation implémentée par une classe SDX spécifiquement conçue pour cela. L'attribut <sgmltag class="attribute">th</sgmltag> est facultatif, il sert à préciser le thésaurus (par son identifiant) qui sera utilisé pour trouver des termes ; nous verrons qu'il s'agit seulement d'une valeur par défaut et qu'il est possible de le spécifier pendant le processus d'indexation comme tel.</para></section><section><title>L'ajout de termes</title><para>L'ajout de termes doit être demandé dans une transformation préalable à celle effectuée par la classe <literal>FieldExpansionTransformation</literal>, en utilisant des éléments spécifiques à cette tâche. Nous allons commencer par un exemple pour montrer le fonctionnement général :</para><programlisting>
  &lt;sdx:document id="doc01"&gt;
    &lt;sdx:field name="sujet"&gt;
      Eglise
      &lt;sdx:expandField&gt;
        &lt;sdx:relation type="bt" depth="2" th="thes"/&gt;
      &lt;/sdx:expandField&gt;
    &lt;/sdx:field&gt;
  &lt;/sdx:document&gt;
</programlisting><para>Cet exemple illustre un cas où l'indexation identifie que le terme <literal>Eglise</literal> doit être inclus dans un champ <literal>sujet</literal>, mais que SDX doit utilisé le thésaurus <literal>thes</literal> et inclure les deux termes génériques (<emphasis>broader term</emphasis>) de ce terme. Ainsi, si le téhsaurus a une hiérarchie de type <literal>Patrimoine =&gt; Architecture =&gt; Eglise</literal>, alors les termes <literal>Patrimoine</literal> et <literal>Architecture</literal> seront aussi mis dans autant d'autres occurrences du champ <literal>sujet</literal>.</para><para>Dans cet exemple, l'attribut <sgmltag class="attribute">th</sgmltag> est optionnel, et il indique l'identifiant du thésaurus à utiliser. S'il est absent, le thésaurus par défaut, spécifié dans le pipeline d'indexation, sera utilisé. Les types de relation sont celles qui sont définies pour les thésaurus dans SDX : <literal>bt</literal> pour les termes génériques, <literal>nt</literal> pour les termes spécifiques, <literal>rt</literal> pour les termes associés, et enfin <literal>et</literal> et <literal>pe</literal> pour les termes équivalents ou partiellement équivalents dans une autre langue.</para><para>L'utilisation de ces deux dernières relations exige un nouvel attribut, <sgmltag class="attribute">lang</sgmltag>, pour indiquer dans quelle langue il faut aller chercher les termes équivalents ou partiellement équivalents.</para></section></webpage> 
