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 | # Gestion des résultats Liste des actions décrites dans cette page : `sdx:results` ; `sdx:hpp` ; `sdx:sort` ; `sdx:sorts` ; `sdx:navigation`. ## 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 action | `sdx-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 éventuel | `sdx: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
Nom | Description |
--- | --- | ---
`qid` | Identifiant 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
`force` | Fixé à `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
`page` | Identifie une page dans un jeu de résultats de requête caché dans la session de l'utilisateur. | Facultatif
`p` | Numéro de page. Déprécié | Facultatif
Tableau 2. Paramètres communs
Nom | Description | Elément correspondant |
--- | --- | --- | ---
`hpp` | Spécifie le nombre de réponses que devra contenir la page de résultats. Par défaut, ce nombre est fixé à vingt. | `sdx:hpp` | Facultatif
`sf` | Identifie 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:sorts` | Facultatif
`so` | Identifie l'ordre de classement d'une clé de tri. Par défaut, le classement s'effectue de manière ascendante. | `sdx:sorts` | Facultatif
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 supprimé 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 action | `sdx-parameters.xsl`
Contexte d'utilisation | `sdx:hpp` s'emploie avec les actions suivantes : `sdx:terms` et `sdx:results`
Contenu éventuel | Aucun.
Tableau 3. Paramètres spécifiques
Nom | Description |
--- | --- | ---
`hpp` | Porte le nombre résultats souhaités par page de résultats. Par défaut, sa valeur est 20. | Obligatoire
## `sdx:sort` `sdx:sort` est utilisé 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 action | `sdx-queries.xsl`
Contexte d'utilisation | `sdx: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 éventuel | Aucun.
Tableau 4. Paramètres spécifiques
Nom | Description |
--- | --- | ---
`field` | Identifie le champ sur lequel on souhaite effectuer le tri. | Obligatoire
`order` | Spé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 action | `sdx-queries.xsl`
Contexte d'utilisation | `sdx: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 éventuel | Un ou plusieurs `sdx:sort`.
Tableau 5. Paramètres spécifiques
Nom | Description |
--- | --- | ---
`sf` | Identifie le champ sur lequel on souhaite effectuer le tri. | Obligatoire
`so` | Spé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
Nom | Description |
--- | --- | ---
`qid` | Identifiant de la requête. | Obligatoire
`no` | Identifiant d'un résultat dans une requête | Obligatoire
`n` | Déprécié Identifiant d'un résultat dans une requête. |
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

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