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'indexListe 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 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.
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.
Tableau 1. Paramètres spécifiques
Tableau 2. Paramètres communs
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 |