Documentation SDX-2 Télécharger Installer Présentation Configuration Indexation Recherche OAI Javadoc Référence API-XSP Pages XSP Paramètres SDX Vue d'ensemble Structure Paramètres et flux Identification Droits Localisation Pipelines Thesaurus Indexation Recherche Index Requêtes Paramètres Amender Résultats Documents Liste alphabétique Migration Schemas Performances | # Contenu d'index Liste des actions décrites dans cette page : `sdx:terms` . Si cette section ne se trouve pas dans le chapitre indexation, c'est que les actions décrites ici sont en réalité des requêtes exécutées dans les index d'une base de document. ## `sdx:terms` `sdx:terms` permet de retirer la liste des termes d'un index. Il s'agit donc d'une requête à part entière. Si `sdx:terms` peut s'employer tel quel dans une page XSP, elle admet un certain nombre de paramètres permettant d'affiner la requête. De même qu'il est possible de retirer l'ensemble des termes d'un index, on peut ainsi choisir de filtrer les résultats, d'affiner la recherche.
| Note
Attention, depuis la version 2.2, le résultat d'une requête sur un index a changé : le nom du champ interrogé se situe désormais dans l'attribut `field` de l'élément `sdx:terms`. Pour des raisons de compatibilité avec les applications existantes, l'attribut `field` se trouve également dans les `sdx:term`, fils de `sdx:terms`. Il convient donc de ne pas en ternir compte pour les applications SDX développées à partir de la version 2.2 (cf. illustration donnée dans l'exemple suivant).
Il est souvent intéressant de construire une liste de termes à partir du croisement de plusieurs index. On devarit naturellement se retourner vers l'élément `sdx:filter` qui fait normalement ce travail avec l'ensemble des actions de requêtes. Malheureusement, `sdx:terms` ne permet pas de l'utiliser. Malgré tout, on peut obtenir cette liste filtrée en construisant un ensemble de couples champs/valeurs grâce à l'élément `sdx:parameter` ou les paramètres d'URL comme le présente l'exemple ci-dessous.
Code implémentant cette action | `sdx-actions.xsl`
Contexte d'utilisation | N'importe où dans une `sdx:page` . (FIXME)
Contenu éventuel | Une liste de champs valeurs construite à partir d'éléments `sdx:parameter` afin de retourner une liste de termes filtrée (cf. l'exemple ci-dessous).
Tableau 1. Paramètres spécifiques
Nom | Description |
--- | --- | ---
`field` | Identifie le champ que l'on désire interroger. | Obligatoire
`f` Déprécié | Idem. | Obligatoire
`value` | Identifie la valeur que l'on souhaite retrouver. Utilisé pour le cas où l'on cherche à filtrer la requête. | Facultatif
`v` Déprécié | Idem. | Facultatif
`qid` | Identifiant de la requête (TODO : expliquer). | CHECK
`page` | Identifiant de la page. | CHECK
`p` Déprécié | Identifiant de la page. | CHECK
Tableau 2. Paramètres communs
Nom | Description | Elément correspondant |
--- | --- | --- | ---
`app` | Identifie l'application dans laquelle on souhaite effectuer l'interrogation. Par défaut, il s'agit de l'application courante. | `sdx:app` | Facultatif
`base` | Identifie la base de documents dans laquelle on souhaite effectuer l'interrogation. Si non spécifiée, il s'agit de la base de documents par défaut. | `sdx:base` | Facultatif
`repo` | Identifie l'entrepôt dans lequel on souhaite effectuer l'interrogation. Si non spécifié, il s'agit de l'entrepôt par défaut. | `sdx:repo` | Facultatif
`hpp` | Définit le nombre de résultats souhaités par page. Par défaut, le nombre est fixé à 20. | `sdx:hpp` | Facultatif
Exemple 1. Lister l'ensemble des termes d'un index Dans l'exemple suivant, on demande la liste des termes d'un index. Celui-ci n'est pas spécifié directement dans la page. Il est passé dynamiquement dans l'URL : `{serveur sdx}/sdx/sdxtest/terms.xsp?champ=commune&base=docs`
    <sdx:page>
      <sdx:terms fieldParam="champ"/>
    </sdx:page>
Le résultat de la requête (i.e. le XML virtuel généré par cette page XSP) :
    ...
      <sdx:terms field="commune" qid="q4" page="1" hpp="20" pages="28" nb="554"
        start="1"
        end="20"
        id="q4"
        currentPage="1"
        nbPages="28">

        <sdx:term no="1" value="Rennes" escapedValue="Rennes" field="commune"
          docs="1"
          id="F1980199800001"
          base="docs"
          app="fr.culture.sdx.adfi"
          docId="F1980199800001"
          docFreq="1"/>

        <sdx:term no="2" value="Nantes" escapedValue="Nantes" field="commune"
          docs="3"
          docFreq="3"/>
        ...
      </sdx:terms>
    ...
Les résultats sont présentés dans un élément `sdx:terms` portant plusieurs informations : le nom du champ interrogé, l'identifiant de la requête (`qid`), le numéro de la page courante (`page` et `currentPage`), le nombre de résultats par page (`hpp`), le nombre de pages contenant des résultats (`pages` et `nbPages`), le nombre total de résultats (`nb`), le numéro du premier résultat (`start`), celui du dernier (`end`) dans la page. Chacun des résultats est présenté dans un élément `sdx:term`. Dans l'exemple qui nous intéresse, le premier résultat identifie un seul document localisé sur la commune de Rennes (`docFreq="1"`). L'identifiant de ce document (`id` et `docId`) permettra de l'afficher à la demande (voir le chapitre sur l'affichage de document). Le second résultat (`no="2"`) identifie trois documents localisés sur la commune de `Nantes`. Leur identifiant ne sont pas donnés dans le résultat ; il faudra effectuer une nouvelle interrogation afin de dresser la liste de ces documents (voir la section sur l'exécution d'une requête : `sdx:executeFieldQuery` ). Attention, des modifications ont été apportées dans le résultat d'une requête avec `sdx:terms` depuis la version 2.2 de SDX, comme indiqué dans la note précédente. Exemple 2. Filtrer une liste de termes d'un index Dans l'exemple suivant, on demande la liste complète des communes dont le nom commence par la lettre "`A`" :
    <sdx:page>
      <sdx:terms field="commune" value="a*" hpp="-1">
        <sdx:fallback>
          <xsl:message type="echec_requete"/>
        </sdx:fallback>
      </sdx:terms>
    </sdx:page>
Exemple 3. Retourne le nombre de documents Dans l'exemple suivant, on cherche à retourner le nombre de documents indexés dans une base de documents :
    <sdx:page>
      <sdx:terms
        field="sdxall"
        app="fr.sdx.test"
        base="sdxworld">
    </sdx:page>
On obtient alors le résultat suivant :
    <sdx:document ...>
      <sdx:terms qid="q28" ...>
        <sdx:term
          no="1"
          value="1"
          escapedValue="1"
          field="sdxall"
          docs="12"
          docFreq="12"/>
      </sdx:terms>
    </sdx:document>
Il nous apprend que 12 documents ont été indexés dans la base `sdxworld` de l'application identitiée par `fr.sdx.test` Exemple 4. Construire une liste de termes filtrée Dans l'exemple suivant, on cherche à retourner les villes de la région Aquitaine :
    <sdx:page>
      <sdx:terms>
          <sdx:parameter name="field" value="region" />
          <sdx:parameter name="value" value="Aquitaine" />
          <sdx:parameter name="field" value="ville" />
      </sdx:terms>
    </sdx:page>
L'ordre des couples champs/valeurs est important. Le dernier paramètre doit être un champs, non suivie de valeur. On peut obtenir le même résultat en utilisant les paramètres d'URL. On aura ainsi une XSP plus simple :
    <sdx:page>
      <sdx:terms />
    </sdx:page>
On utilisera une URL de ce type : `http://[sdx]/[monapplication]/monxsp.xsp?field=region&value=Aquitaine&field=ville`
| Auteur : Malo Pichot ( AJLSM ) - 2005-03-22

| Home |
Copyright © 2000, 2001, 2002, 2003, 2004 Ministère de la culture et de la communication, AJLSM.