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

Gestion des résultats

Liste des actions décrites dans cette page :

Concepts clés

SDX offre plusieurs actions permettant de travailler le résultat d'une requête. Il est ainsi possible de préciser le nombre de réponses que l'on veut voir sortir par page de résultats (on ne veut peut être pas avoir à traiter une document XML virtuel long de plusieurs centaines de réponses) avec sdx:hpp, trier ces résultats avec sdx:sorts et sdx:sort, naviguer parmi les différents documents issus d'une même requête avec sdx:navigation. Enfin, parce qu'il arrive que l'on exécute la même requête et qu'une recherche prend du temps, il est possible de récupérer un résultat déjà obtenu avec sdx:results.

sdx:results

Lors de son exécution, une requête reçoit un identifiant (paramètre qid transmis dynamiquement par SDX ou statiquement par le développeur dans une page XSP). sdx:results permet de récupérer le résultat de cette requête sans avoir à la ré-exécuter.

Par défaut SDX conserve en mémoire les cinq derniers résultats de requête. Le sixième "chasse" le premier. Ce nombre peut être modifié en changeant la variable sdx_qmax (cf. la logicsheet sdx.xsl).

Il est possible de conserver un résultat de requête durant toute la session d'un utilisateur en passant soi-même un identifiant (attribut qid d'une requête). Quoi qu'il en soit, l'identifiant d'une requête demeure dans la mémoire de la session de l'utilisateur courant. Cela signifie, qu'à l'arrêt de la session (i.e. fermeture du navigateur ou déconnexion de l'utilisateur), l'identifiant est supprimé de la cache et qu'un identifiant de requête ne peut pas être partagé entre plusieurs sessions d'utilisateurs. Il n'y a pas encore de mécanisme de mémorisation d'une requête au niveau du serveur, mais ce n'est pas impossible et relativement économe en ligne de code (TODO : cf. message de Frédéric Glorieux dans la liste sdx-developers).

Code implémentant cette actionsdx-queries.xsl
Contexte d'utilisation sdx:results et ses paramètres spécifiques peut être employé avec sdx:deleteDocuments et l'ensemble des actions d'exécution de requêtes (excepté sdx:terms).
Contenu éventuelsdx:results peut contenir les actions sdx:success et sdx:fallback. Il est donc permis de définir des "stratégies"

Tableau 1. Paramètres spécifiques

NomDescription 
qidIdentifiant de la requête, ce paramètre permet de récupérer le résultat d'une requête demeuré en mémoire de la session de l'utilisateur. Il n'y a pas encore de mécanisme de mémorisation d'une requête au niveau du serveur, mais ce n'est pas impossible à réaliser (TODO : cf. message de Frédéric Glorieux dans la liste sdx-developers).Facultatif
forceFixé à true, ce paramètre force l'application à ré-exécuter une requête identifiée par son qid. C'est une manière de recréer un jeu de résultats tout en conservant la syntaxe d'une requête.Facultatif
pageIdentifie une page dans un jeu de résultats de requête caché dans la session de l'utilisateur.Facultatif
pNuméro de page. DépréciéFacultatif

Tableau 2. Paramètres communs

NomDescriptionElément correspondant 
hppSpécifie le nombre de réponses que devra contenir la page de résultats. Par défaut, ce nombre est fixé à vingt.sdx:hppFacultatif
sfIdentifie le champ sur lequel on souhaite effectuer le tri. Ce paramètre est répétable en autant de clés de tri désirées.sdx:sortsFacultatif
soIdentifie l'ordre de classement d'une clé de tri. Par défaut, le classement s'effectue de manière ascendante.sdx:sortsFacultatif

Exemple 1. Identifier statiquement un résultat de requête

Cette page XSP exécute une requête sur le champ sdxall avec la valeur 1 (ceci a pour effet de retourner l'ensemble des documents d'une base) et identifie statiquement son résultat. On ne laisse pas SDX effectuer automatiquement cette identification. De cette manière, on cherche à conserver le jeu de résultats durant toute la session de l'utilisateur, sans qu'il soit supprimer après un certain nombre de requête, par défaut ce nombre est fixé à 5. Il est possible de modifier la valeur par défaut en ajoutant un attribut sessionObjectLimit à l'élément racine sdx:application dans le fichier application.xconf d'une application.

<sdx:page>
 <sdx:executeFieldQuery field="sdxall" value="1" qid="selectAllAtStart" />
</sdx:page>

Ceci nous permet de conserver l'ensemble des documents présents dans la ou les bases au moment cette requête est exécutée. Imaginons que nous exécutions cette requête au début de la session d'un utilisateur. Il nous serait possible de restituer le nombre de résultat à n'importe quel moment de la session de l'utilisateur courant et, par exemple, de le comparer avec le nombre de documents à un instant T en utilisant le code suivant (noter que le type de requête n'a aucune importance) :

<sdx:page>
 <sdx:executeSimpleQuery qid="selectAllAtStart" />
</sdx:page>

sdx:hpp

sdx:hpp permet de créer les groupes de résultats en déterminant leur nombre. S'il n'est pas expressément défini, les résultats seront regroupé par lot de vingt dans chaque page. Noter que la valeur -1 génère une liste complète des résultats sur une seule page.

Code implémentant cette actionsdx-parameters.xsl
Contexte d'utilisationsdx:hpp s'emploie avec les actions suivantes : sdx:terms et sdx:results
Contenu éventuelAucun.

Tableau 3. Paramètres spécifiques

NomDescription 
hppPorte le nombre résultats souhaités par page de résultats. Par défaut, sa valeur est 20.Obligatoire

sdx:sort(CHECK)

sdx:sort est utilisée pour trier les résultats d'une requête. Il admet deux ordres de tri (ascendant et descendant). Il peut être répété (au sein de son conteneur, multiple ou non, sdx:sorts) afin de paramétrer plusieurs clés de tri. Son utilisation s'apparente à la commande xsl:sort d'une feuille XSLT.

Code implémentant cette actionsdx-queries.xsl
Contexte d'utilisationsdx:sort s'emploie avec sdx:results et donc avec l'ensemble des actions d'exécution de requête sdx:execute*Query et sdx:terms.
Contenu éventuelAucun.

Tableau 4. Paramètres spécifiques

NomDescription 
fieldIdentifie le champ sur lequel on souhaite effectuer le tri.Obligatoire
orderSpécifie l'ordre de classement de la clé de tri : ascendant ou descendant. Par défaut, le tri est ascendant.Facultatif

Exemple 2. Double clé de tri

Cette page XSP génère une requête dans l'index ville. Les résultats obtenus seront triés par nom de pays puis par nom de ville (si tant est que ces deux champs soient présents dans la page de résultat : attribut brief="true" dans le fichier application.xconf) FIXME.

<sdx:page>
 <sdx:executeSimpleQuery field="ville" queryParam="question">
  <sdx:sort field="pays" order="descendant"/>
  <sdx:sort field="ville" order="descendant"/>
 </sdx:executeSimpleQuery>
</sdx:page>

sdx:sorts

sdx:sorts est le conteneur multiple de sdx:sort. Il permet également de passer dynamiquement de multiples paramètres de tri dans une URL.

Code implémentant cette actionsdx-queries.xsl
Contexte d'utilisationsdx:sort s'emploie avec sdx:results et donc avec l'ensemble des actions d'exécution de requête sdx:execute*Query et sdx:terms.
Contenu éventuelUn ou plusieurs sdx:sort.

Tableau 5. Paramètres spécifiques

NomDescription 
sfIdentifie le champ sur lequel on souhaite effectuer le tri.Obligatoire
soSpécifie l'ordre de classement de la clé de tri : ascendant ou descendant. Par défaut, le tri est ascendant..Facultatif

Exemple 3. Clé de tri double en paramètre dynamique

La page XSP suivante :

<sdx:page>
 <sdx:executeSimpleQuery
  field="ville"
  queryParam="question"
  baseParam="base"
  sfParam="sortfield"
  soParam="sortorder"
 />
</sdx:page>

permet de récupérer un résultat trié selon les mêmes clés de tri que dans l'exemple précédent au moyen de l'URL {serveur SDX}/sdxtest/ss.xsp?1=docs&2=france&3=pays&4=descendant&3=ville&4=descendant.

sdx:navigation

En relation avec la lecture d'un document XML, SDX offre des fonctions de navigation au sein des résultats d'une requête. Le développeur d'application peut ainsi permettre au lecteur de naviguer littéralement d'un document à un autre suivant un système de document précédent-suivant.

Tableau 6. Paramètre spécifique

NomDescription 
qidIdentifiant de la requête.Obligatoire (FIXME)
noIdentifiant d'un résultat dans une requêteFacultatif (FIXME)
nDéprécié

Identifiant d'un résultat dans une requête.

Facultatif (FIXME)

L'action sdx:navigation n'emploie aucun paramètre commun.

Un exemple de l'utilisation de sdx:navigation est proposé avec l'action sdx:includeDocument.



Auteur : Malo Pichot (AJLSM) - 2005-03-16