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


SDX

Contenu d'index

Liste des actions décrites dans cette page :

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'utilisationN'importe où dans une sdx:page . (FIXME)
Contenu éventuelUne 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

NomDescription 
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

NomDescriptionElé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