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 | # Exécution des requêtes Liste des actions SDX décrites dans cette page : `sdx:fieldQuery` ; `sdx:executeFieldQuery` ; `sdx:listQuery` ; `sdx:executeListQuery` ; `sdx:dateQuery` ; `sdx:executeDateQuery` ; `sdx:dateIntervalQuery` Déprécié ; `sdx:executeDateIntervalQuery` Déprécié ; `sdx:simpleQuery` ; `sdx:executeSimpleQuery` ; `sdx:linearQuery` ; `sdx:executeLinearQuery` ; `sdx:complexQuery` ; `sdx:executeComplexQuery` . ## Concepts clés ### Introduction SDX est avant tout un outil de recherche d'informations dans une collection de documents XML. Il offre ainsi au développeur un large panel d'éléments pour construire les outils de recherche de son application. Il n'est pas question de développer les caractéristiques de la recherche documentaire dans cette page. Cet aspect très important de SDX occupe déjà un chapitre complet de cette documentation (TODO : lien vers le chapitre). On se contentera de reprendre quelques informations. ### Génération d'une requête La génération d'une requête (et donc d'un résultat de requête) dans SDX se déroule en trois phases : La construction de la requête ; L'exécution de la requête ; Le résultat de la requête. Il est important d'avoir cette vue d'ensemble de la génération d'une requête pour bien comprendre l'emploi des outils de l'API-XSP de SDX décrits dans cette documentation technique. Cette page ne présente que les deux première phases de génération (la construction et l'exécution). Les éléments SDX liés aux résultats d'une interrogation sont décrits dans la section Gestion des résultats . Le tableau ci-après classe les différents éléments de l'API-XSP entrant dans la construction de la recherche documentaire dans une application SDX selon la place qu'ils occupent dans ce processus :
Type de requête | Description | Elément de construction | Elément d'exécution
--- | --- | --- | ---
Types de requêtes
Recherche sur champ | Retrouver une valeur précise dans un champ. | `sdx:fieldQuery` | `sdx:executeFieldQuery`
Recherche sur liste | Retrouver plusieurs valeurs dans un ou plusieurs champs. | `sdx:listQuery` | `sdx:executeListQuery`
Recherche par date | Retrouver une date précise ou dans un intervalle de temps. | `sdx:dateQuery` | `sdx:executeDateQuery`
Recherche simple | Retrouver un ou plusieurs mots dans un document. | `sdx:simpleQuery` | `sdx:executeSimpleQuery`
Syntaxe de requête
Recherche linéaire | Formuler des requêtes sur un même niveau. | `sdx:linearQuery` | `sdx:executeLinearQuery`
Recherche complexe | Formuler des requêtes à plusieurs niveaux de regroupements | `sdx:complexQuery` | `sdx:executeComplexQuery`
Recherche simple | Formuler une requête d'après la syntaxe Lucene (moteur de recherche par défaut de SDX) | `sdx:simpleQuery` | `sdx:executeSimpleQuery`
En guise de conclusion de cette introduction, il convient de noter que SDX offre plusieurs manières d'améliorer une requête. On peut choisir (a priori du résultat) d'étendre celle-ci à l'aide d'un thesaurus ou, au contraire, d'y appliquer un filtre. Il est également possible de reprendre une recherche (on agit ici a posteriori du résultat) pour la retravailler. Ces éléments de l'API-XSP de SDX sont décrits plus loin. ## `sdx:fieldQuery`(CHECK) ### Description Dans le panel des actions de recherche mises à disposition par SDX, `sdx:fieldQuery` représente la recherche la plus précise, celle qui permet de réduire le bruit à son minimum. Pour cela, `sdx:fieldQuery` recherche une valeur précise dans un champ. Par exemple, on peut retrouver les documents dont le sujet est explicitement `Cartographie de la France`. Ce type de requête ne prendra pas en compte les documents dont le sujet s'en approche tel que `Cartographie de l'Aquitaine` ou `Archéologie de la France`. C'est en cela que ce type de recherche est le plus précis. Il est toutefois important de noter que cette méthode n'est logiquement utilisable que sur des index de type `field`. C'est-à-dire des champs indexés tels quels, les termes qu'ils contiennent étant considérées comme une seule et même valeur. Utiliser une requête sur champ sur un index de type `word` (chaque terme correspond à une valeur à indexer) serait illogique et n'aurait peu ou pas de chance d'aboutir à un résultat.
| Note
Il est important de noter que ce type de requête ne fait pas intervenir l'analyseur de mot, contrairement aux autres types de recherche. Il n'y a donc pas de transformation de la valeur recherchée : `value="France"` signifie que l'on recherchera sera recherchée telle que, et non pas `france`.
Code implémentant cette action | `sdx-queries.xsl`
Contexte d'utilisation | Dans une `sdx:executeComplexQuery` ou un `sdx:executeFieldQuery` .
Contenu éventuel | Un élément `sdx:expandQuery` offrant l'utilisation d'un thesaurus. Des stratégies peuvent être définies grâce à l'utilisation des actions de contrôle de flux `sdx:fallback` et `sdx:success` . En cas d'échec de la requête (la requête n'est pas valide), les actions et/ou éléments contenus dans l'ensemble `sdx:fallback` sont traités. Sinon, ce sont ceux de `sdx:success` lorsqu'il existe.
### Paramètres
Nom | Description | Présence
--- | --- | ---
`field` | Nom du champ interrogé. | Obligatoire
`f` | Idem. Déprécié |
`value` | Valeur ou terme recherché. | Obligatoire
`v` | Idem. Déprécié |
## `sdx:executeFieldQuery`(CHECK) ### Description `sdx:executeFieldQuery` apporte l'environnement nécessaire à l'exécution d'une requête sur champ.
Code implémentant cette action | `sdx-queries.xsl`
Contexte d'utilisation | N'importe où dans `sdx:page` .
Contenu éventuel | Des stratégies peuvent être définies grâce à l'utilisation des actions de contrôle de flux `sdx:fallback` et `sdx:success` . En cas d'échec de la requête (il n'y a aucun résultat à la requête posée), les actions et/ou éléments contenus dans l'ensemble `sdx:fallback` sont traités. Sinon, ce sont ceux de `sdx:success` lorsqu'il existe.
### Paramètres Paramètres communs aux actions de requêtes (facultatifs).
Nom | Description | Présence
--- | --- | ---
`field` | Nom du champ interrogé. | Obligatoire
`f` | Idem. Déprécié |
`value` | Valeur ou terme recherché. | Obligatoire
`v` | Idem. Déprécié |
### Exemples Exemple 1. Rechercher les documents ayant un même auteur Dans l'exemple suivant, on veut obtenir la liste des documents écrits par le même auteur, et seulement ces documents.
    <sdx:page>
     <sdx:executeFieldQuery base="sdxworld" field="auteur" value="Emile Zola"/>
    </sdx:page>
Exemple 2. Rechercher un terme dans un index Dans l'exemple suivant, on recherche l'ensemble des documents d'une base de documents. On recherche dons strictement la même chose dans l'exemple illustrant une recherche simple. La manière d'y arriver n'est cependant pas la même.
    <sdx:page>
     <sdx:executeFieldQuery
       base="sdxworld sdxdoc"
       field="sdxall"
       value="1"
       hpp="-1"
     />
    </sdx:page>
On trouvera un exemple atypique de l'utilisation de sdx:executeFieldQuery dans la description de sdx:debug. ## `sdx:listQuery` ### Description Dans le panel des actions de recherche SDX, `sdx:listQuery` représente la recherche d'une liste de termes. On peut y voir une extension de la recherche sur champ. Lorsqu'une base indexe un champ répétable (auteur(s), sujet(s), etc.), il peut être intéressant de rechercher les documents répondant à plusieurs valeurs sur ce même champ. La recherche d'une liste (paramètre `value` répétable sur le champ `field`), correspond à la requête simple `+field:value1 +field:value2 +field:value3`. Notez que l'opérateur par défaut est un `ou` logique. Il peut être modifié en `et` (`op=or|and`) pour donner la requête suivante : `field:value1 field:value2 field:value3`.
Code implémentant cette action | `sdx-queries.xsl`
Contexte d'utilisation | Dans une `sdx:executeComplexQuery` ou un `sdx:executeFieldQuery` .
Contenu éventuel | Un élément `sdx:expandQuery` offrant l'utilisation d'un thesaurus. Des stratégies peuvent être définies grâce à l'utilisation des actions de contrôle de flux `sdx:fallback` et `sdx:success` . En cas d'échec de la requête (la requête n'est pas valide), les actions et/ou éléments contenus dans l'ensemble `sdx:fallback` sont traités. Sinon, ce sont ceux de `sdx:success` lorsqu'il existe.
### Paramètres
Nom | Description | Présence
--- | --- | ---
`op` | Opérateur de requête. L'opérateur par défaut est un `ou` logique. | Facultatif
`field` | Nom du champ interrogé. | Obligatoire
`f` | Idem. Déprécié |
`value` | Valeur ou terme recherché. | Obligatoire
`v` | Idem. Déprécié |
## `sdx:executeListQuery`(CHECK) ### Description `sdx:executeListQuery` apporte l'environnement nécessaire à l'exécution d'une requête sur liste.
Code implémentant cette action | `sdx-queries.xsl`
Contexte d'utilisation | N'importe où dans `sdx:page` .
Contenu éventuel | Des stratégies peuvent être définies grâce à l'utilisation des actions de contrôle de flux `sdx:fallback` et `sdx:success` . En cas d'échec de la requête (il n'y a aucun résultat à la requête posée), les actions et/ou éléments contenus dans l'ensemble `sdx:fallback` sont traités. Sinon, ce sont ceux de `sdx:success` lorsqu'il existe.
### Paramètres Paramètres communs aux actions de requêtes (facultatifs).
Nom | Description | Présence
--- | --- | ---
`op` | Opérateur de requête. L'opérateur par défaut est un `ou` logique. | Facultatif
`field` | Nom du champ interrogé. | Obligatoire
`f` | Idem. Déprécié |
`value` | Valeur ou terme recherché. | Obligatoire
`v` | Idem. Déprécié |
### Exemples Exemple 3. Rechercher plusieurs termes dans un index Dans l'exemple suivant, on recherche les termes "verne" et "jules" dans un index répétable "auteur". On omet de préciser l'application et la base de documents ; il s'agit de l'application et de la base de documents courantes comme décrit dans la section sur les paramètres.
    <sdx:page>
     <sdx:executeListQuery field="auteur" value="verne jules" op="and"/>
    </sdx:page>
## `sdx:dateQuery`(CHECK) ### Description Dans le panel des actions de recherche fournies par SDX, `sdx:dateQuery` représente une recherche de dates (représentant ou non un intervalle). La recherche par intervalle de dates ne donnera de résultats intéressants que pour un champ de type `date`. Il s'agit d'une recherche où l'on peut spécifier une date de début ou une date de fin (voire les deux) et trouver des résultats dont le champ spécifié contient une date entre ces deux valeurs. Si l'une des deux dates n'est pas spécifiée, la recherche n'est pas bornée. Si aucune date n'est spécifiée, il y aura une erreur d'exécution. TODO : décrire l'usage de 2 champs s'appliquant réciproquement au champ concerné par to (!) puis à celui concerné par from
Code implémentant cette action | `sdx-queries.xsl`
Contexte d'utilisation | Dans une `sdx:executeComplexQuery` ou un `sdx:executeDateQuery` .
Contenu éventuel | Des stratégies peuvent être définies grâce à l'utilisation des actions de contrôle de flux `sdx:fallback` et `sdx:success` . En cas d'échec de la requête (la requête n'est pas valide), les actions et/ou éléments contenus dans l'ensemble `sdx:fallback` sont traités. Sinon, ce sont ceux de `sdx:success` lorsqu'il existe.
### Paramètres
Nom | Description | Elément correspondant |
--- | --- | --- | ---
`field` | Le nom du champ que l'on souhaite interroger. | `sdx:fields` | Obligatoire
`f` | Idem. Déprécié | `sdx:fields` |
`from` | Borne de départ (on recherchera les dates plus récente que celle-ci). | `sdx:from` | Obligatoire (si `to` n'est pas donné).
`to` | Borne de fin (on recherchera les dates plus anciennes que celle-ci). | `sdx:to` | Obligatoire (si `from` n'est pas donné).
## `sdx:executeDateQuery`(CHECK) ### Description `sdx:executeDateQuery` apporte l'environnement nécessaire à l'exécution d'une requête sur date.
Code implémentant cette action | `sdx-queries.xsl`
Contexte d'utilisation | N'importe où dans `sdx:page` .
Contenu éventuel | Des stratégies peuvent être définies grâce à l'utilisation des actions de contrôle de flux `sdx:fallback` et `sdx:success` . En cas d'échec de la requête (il n'y a aucun résultat à la requête posée), les actions et/ou éléments contenus dans l'ensemble `sdx:fallback` sont traités. Sinon, ce sont ceux de `sdx:success` lorsqu'il existe.
### Paramètres Paramètres communs aux actions de requêtes (facultatifs).
Nom | Description | Elément correspondant |
--- | --- | --- | ---
`field` | Le nom du champ que l'on souhaite interroger. | `sdx:fields` | Obligatoire
`f` | Idem. Déprécié | `sdx:fields` |
`from` | Borne de départ (on recherchera les dates plus récente que celle-ci). | `sdx:from` | Obligatoire (si `to` n'est pas donné).
`to` | Borne de fin (on recherchera les dates plus anciennes que celle-ci). | `sdx:to` | Obligatoire (si `from` n'est pas donné).
### Exemples Exemple 4. Recherche sur un intervalle de dates Dans l'exemple suivant, on recherche les documents qui ont été créés (champ `creation`) entre le 23 et le 24 mai 2003. On omet de préciser l'application et la base de documents ; il s'agit de l'application et de la base de documents courante comme décrit dans la section sur les paramètres.
    <sdx:page>
     <sdx:executeDateQuery field="creation" from="2003-05-23" to="2003-05-24"/>
    </sdx:page>
## `sdx:dateIntervalQuery` Déprécié (CHECK) L'action `sdx:dateIntervalQuery` est identique à `sdx:dateQuery` . On se reportera à cette dernière pour en connaître la définition. ## `sdx:executeDateIntervalQuery` Déprécié (CHECK) L'action `sdx:executeDateIntervalQuery` est identique à `sdx:executeDateQuery` . On se reportera à cette dernière pour en connaître la définition. ## `sdx:simpleQuery` ### Description Malgré son nom `sdx:simpleQuery` représente sans doute l'élément le complexe ou le puissant des API décrites ici. La lecture du tableau de classement au début de cette page peu laisser perplexe dans la mesure où `sdx:simpleQuery` apparaît à deux endroits, dans les types ainsi que dans les syntaxes de requêtes. Cela traduit, en effet, le double aspects de cet élément. D'un côté il représente le type le plus simple de requête supporté par SDX. On recherche un mot dans le champ par défaut (défini dans `application.xconf` ; s'il n'y en a pas Lucene prend le dernier de la liste : FIXME). De l'autre côté, `sdx:simpleQuery` permet d'effectuer une requête directement dans le langage de l'analyseur de requête (query parser) de Lucene (i.e., le moteur de recherche par défaut supporté par SDX). Cela signifie que l'on peut concrètement effectuer l'ensemble des types de recherche décrits ci-avant : La recherche sur liste `+titre:france +titre:cartographie` La recherche linéaire `+titre:france +auteur:verne -auteur:jules` La recherche par date `+creation:[2002-05-28 TO 2003-05-28]` La recherche complexe `(+titre:france +titre:cartographie) -(+auteur:verne +:auteur:jules) +creation:[2002-05-28 TO 2003-05-28]` SDX ajoute une fonctionnalité à cette syntaxe déjà importante. Il permet l'utilisation d'un opérateur `|`. Lorsque cet opérateur englobe le terme recherché, il déconnecte l'analyseur de mot. De cette manière, il est possible d'effectuer une recherche sur champ. La requête simple `titre:|France|` donnera tous les documents dont le champ titre contient le mot "France" avec la majuscule.
| Note
Il est bien entendu indispensable que le champ `titre` en question ait été indexé en `field` et non comme `word`, sinon on obtiendra les documents qui ont `France`, mais également autre chose dans le titre
Une requête simple peut-être exécutée en tant que telle grâce à l'action `sdx:executeSimpleQuery` . Elle peut également entrer dans la construction d'une requête complexe.
Code implémentant cette action | `sdx-queries.xsl`
Contexte d'utilisation | Dans une `sdx:executeComplexQuery` ou un `sdx:executeSimpleQuery` .
Contenu éventuel | Un élément `sdx:expandQuery` offrant l'utilisation d'un thesaurus. Des stratégies peuvent être définies grâce à l'utilisation des actions de contrôle de flux `sdx:fallback` et `sdx:success` . En cas d'échec de la requête (la requête n'est pas valide), les actions et/ou éléments contenus dans l'ensemble `sdx:fallback` sont traités. Sinon, ce sont ceux de `sdx:success` lorsqu'il existe.
### Paramètres
Nom | Description |
--- | --- | ---
`query` | Le contenu de la requête (les termes recherchés ou la syntaxe Lucene). | Obligatoire
`q` | Idem. Déprécié |
`field` | Identifiant du champ dans lequel on souhaite effectuer la recherche. S'il n'est pas spécifié, SDX emploie le champ marqué par défaut dans le fichier `application.xconf`. | Facultatif
`f` | Idem. Déprécié |
`op` | Opérateur de requête. Par défaut, il s'agit d'un `ou` logique. | Facultatif
## `sdx:executeSimpleQuery`(CHECK) ### Description `sdx:executeSimpleQuery` apporte l'environnement nécessaire à l'exécution d'une requête simple.
Code implémentant cette action | `sdx-queries.xsl`
Contexte d'utilisation | N'importe où dans `sdx:page` .
Contenu éventuel | Des stratégies peuvent être définies grâce à l'utilisation des actions de contrôle de flux `sdx:fallback` et `sdx:success` . En cas d'échec de la requête (il n'y a aucun résultat à la requête posée), les actions et/ou éléments contenus dans l'ensemble `sdx:fallback` sont traités. Sinon, ce sont ceux de `sdx:success` lorsqu'il existe.
### Paramètres Paramètres communs aux actions de requêtes (facultatifs).
Nom | Description | Elément correspondant |
--- | --- | --- | ---
`query` | Le contenu de la requête (syntaxe Lucene). | `sdx:simpleQuery` | Obligatoire
`q` | Idem. Déprécié | `sdx:simpleQuery` |
`op` | Opérateur de requête. L'opérateur par défaut est un `ou` logique. | `sdx:simpleQuery` | Facultatif
### Exemples Exemple 5. Rechercher l'ensemble des documents Dans l'exemple suivant, on recherche l'ensemble des documents contenus dans deux bases de document `sdxworld` et `sdxdoc` (ce sont les deux bases de documents définies dans l'application `SDXTest`). Lors de l'indexation, chaque document se voit affecté un champ `sdxall` avec une valeur de `1`. De cette manière, il suffit d'interroger sur ce champ pour avoir l'ensemble des documents. Le paramètre `hpp` positionné à `-1` indique que l'on veut toutes les réponses dans une seule page de résultats.
    <xsp:page>
     <sdx:executeSimpleQuery
      base="sdxworld sdxdoc"
      query="sdxall:1"
      hpp=-1
     />
    </xsp:page>
## `sdx:linearQuery`(CHECK) ### Description Avec `sdx:complexQuery` et `sdx:simpleQuery` , `sdx:linearQuery` est l'une des trois actions de recherche décrivant une syntaxe donnée. Cela signifie que `sdx:linearQuery` n'effectue pas de recherche particulière comme `sdx:fieldQuery` pour une recherche dans un champ ou `sdx:dateQuery` pour rechercher une date. Elle propose une certaine forme de rédaction. `sdx:complexQuery` en propose une autre. La requête linéaire est un outil commode pour formuler une recherche avancée par formulaire. Elle permet de formuler des requêtes sur un même niveau (i.e. en ligne). Ainsi la question « Trouve moi les livres ayant le mot monde dans le titre et ayant la physique pour sujet, ou alors écrit par Einstein » peut se traduire sous la forme d'une URL (avec une base de documents configurée en ce sens) : `?op=and&f=titre&v=monde&op=and&f=sujet&v=physique&op=or&f=auteur&v=einstein`, ce qui donnera une requête simple `+titre:monde +sujet:physique auteur:einstein`.
Code implémentant cette action | `sdx-queries.xsl`
Contexte d'utilisation | D'un point de vue théorique, il est possible d'intégrer `sdx:linearQuery` dans une `requête complexe` . Mais est-ce véritablement intéressant ?
Contenu éventuel | Un élément `sdx:expandQuery` offrant l'utilisation d'un thesaurus. Des stratégies peuvent être définies grâce à l'utilisation des actions de contrôle de flux `sdx:fallback` et `sdx:success` . En cas d'échec de la requête (la requête n'est pas valide), les actions et/ou éléments contenus dans l'ensemble `sdx:fallback` sont traités. Sinon, ce sont ceux de `sdx:success` lorsqu'il existe.
### Paramètres
Nom | Description | Elément correspondant |
--- | --- | --- | ---
`op` | Opérateur de requête. L'opérateur par défaut est un `ou` logique. Il se place avant les champ/valeur sur lesquels il doit prendre effet. |  | Facultatif
`field` | Code du champ que l'on souhaite interroger. | `sdx:fields` | Obligatoire
`f` | Idem. Déprécié | `sdx:fields` |
`value` | Valeur recherchée. | `sdx:values` | Obligatoire
`v` | Idem. Déprécié | `sdx:values` |
## `sdx:executeLinearQuery`(CHECK) ### Description `sdx:executeLinearQuery` apporte l'environnement nécessaire à l'exécution d'une requête linéaire (cf. plus haut).
Code implémentant cette action | `sdx-queries.xsl`
Contexte d'utilisation | N'importe où dans `sdx:page` .
Contenu éventuel | Des stratégies peuvent être définies grâce à l'utilisation des actions de contrôle de flux `sdx:fallback` et `sdx:success` . En cas d'échec de la requête (il n'y a aucun résultat à la requête posée), les actions et/ou éléments contenus dans l'ensemble `sdx:fallback` sont traités. Sinon, ce sont ceux de `sdx:success` lorsqu'il existe.
### Paramètres Paramètres communs aux actions de requêtes (facultatifs).
Nom | Description | Elément correspondant |
--- | --- | --- | ---
`op` | Opérateur de requête. L'opérateur par défaut est un `ou` logique. | `sdx:linearQuery` | Facultatif
`field` | Le code du champ que l'on souhaite interroger. | `sdx:fields` | Obligatoire
`f` | Idem. Déprécié | `sdx:fields` |
`value` | Valeur recherchée. | `sdx:values` | Facultatif
`v` | Idem. Déprécié | `sdx:values` |
## `sdx:complexQuery`(CHECK) ### Description Avec `sdx:linearQuery` et `sdx:simpleQuery` , `sdx:complexQuery` est l'une des trois actions de recherche décrivant une syntaxe donnée. Cela signifie que `sdx:complexQuery` n'effectue pas de recherche particulière comme `sdx:fieldQuery` pour une recherche dans un champ ou `sdx:dateQuery` pour rechercher une date. Elle propose une forme de rédaction, sans doute la plus élaborée. Une recherche complexe permet d'élaborer un arbre de requêtes reliées par des opérateurs ( `complexop` ). Cette méthode permet de représenter des niveaux de parenthèses. L'objectif serait qu'une requête complexe puisse comporter des requêtes elles-mêmes complexes. Cette possibilité n'est pas encore complètement supportée par SDX, car, pour l'essentiel, l'information provient de formulaires (généralement plats). On peut au moins combiner toutes les requêtes précédemment décrites afin d'affiner les recherches avancées.
Code implémentant cette action | `sdx-queries.xsl`
Contexte d'utilisation | Dans une `sdx:executeComplexQuery` ou un `sdx:executeDateQuery` .
Contenu éventuel | Un élément `sdx:expandQuery` offrant l'utilisation d'un thesaurus. Des stratégies peuvent être définies grâce à l'utilisation des actions de contrôle de flux `sdx:fallback` et `sdx:success` . En cas d'échec de la requête (la requête n'est pas valide), les actions et/ou éléments contenus dans l'ensemble `sdx:fallback` sont traités. Sinon, ce sont ceux de `sdx:success` lorsqu'il existe.
### Paramètres
Nom | Description |
--- | --- | ---
`complexop` | Opérateur de requête. Par défaut, l'opérateur est un `ou` logique. | Facultatif
`bqid` | Identifiant de la requête que l'on souhaite affiner ou étendre. | Facultatif
`bop` | Opérateur de requête. Par défaut , l'opérateur est un `ou` logique. | Facultatif
## `sdx:executeComplexQuery`(CHECK) ### Description `sdx:executeComplexQuery` apporte l'environnement nécessaire à l'exécution d'une requête complexe.
Code implémentant cette action | `sdx-queries.xsl`
Contexte d'utilisation | N'importe où dans un `sdx:page` .
Contenu éventuel | L'ensemble des actions de recherche décrites dans cette page : `sdx:simpleQuery` ; `sdx:fieldQuery` ; `sdx:listQuery` ; `sdx:dateQuery` . Comme les autres actions d'exécution de requête, `sdx:executeComplexQuery` peut contenir les actions de contrôle de flux : `sdx:fallback` et `sdx:success` . En cas d'échec de la requête (il n'y a aucun résultat à la requête posée), les actions et/ou éléments contenus dans l'ensemble `sdx:fallback` sont traités. Sinon, ce sont ceux de `sdx:success` lorsqu'il existe.
### Paramètres Paramètres communs aux actions de requêtes (facultatifs).
Nom | Description | Elément correspondant |
--- | --- | --- | ---
`complexop` | Opérateur de requête. L'opérateur par défaut est un `ou` logique. | `sdx:complexQuery` | Facultatif
### Exemples Exemple 6. Construction d'une requête complexe Le code qui suit provient d'un cas réel.
    <sdx:executeComplexQuery>
      <sdx:sort field="region" order="descending"/>
      <sdx:sort field="departement" order="descending"/>
      <sdx:simpleQuery queryParam="fulltext"/>
      <sdx:listQuery
        field="pays"
        valueParam="pays"
        complexopParam="pays_op"/>
      <sdx:listQuery
        field="themes"
        valueParam="themes_v"
        op="and"
        complexopParam="themes_op"/>
      <sdx:simpleQuery
        field="title"
        queryParam="title"
        complexopParam="title_op"/>
    </sdx:executeComplexQuery>
On repérera le paramètre `complexop` qui permet de relier chaque requêtes entre elles, selon le même mécanisme booléen que la requête linéaire. On découvre aussi qu'à chaque `execute*Query` correspond un `*Query`. Cette action construit une requête, mais sans l'exécuter. Un objet est construit ; il est combiné dans la requête complexe. Mais les résultats sont sortis par `sdx:executeComplexQuery`, selon la même manière que les requêtes précédentes.
| Auteurs : Malo Pichot ( AJLSM ) ; Pierrick Brihaye - 2003-11-26

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