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ésultatsSDX 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. 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).
Tableau 1. Paramètres spécifiques
Tableau 2. Paramètres communs
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 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.
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.
Tableau 4. Paramètres spécifiques
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 est le conteneur multiple de sdx:sort. Il permet également de passer dynamiquement de multiples paramètres de tri dans une URL.
Tableau 5. Paramètres spécifiques
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. 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
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 |