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 Documents Liste alphabétique Migration Schemas Performances | # Indexation ou suppression de documents Liste des actions décrites dans cette page : `sdx:uploadDocument` ; `sdx:uploadDocuments` ; `sdx:deleteDocument` ; `sdx:deleteDocuments` ; `sdx:index`. SDX étant avant tout un outil de recherche dans une collection de documents XML, on admettra que l'indexation des dits documents est l'une des actions les plus importantes de l'API-SDX. Plusieurs outils sont mis à disposition dans l'API-XSP de SDX pour remplir cette tâche ; on y voit deux groupes distincts :
Indexer les documents
`sdx:uploadDocument` | Indexer un document.
`sdx:uploadDocuments` | Indexer un lot de documents.
Supprimer les documents
`sdx:deleteDocument` | Supprimer un document.
`sdx:deleteDocuments` | Supprimer un lot de documents.
On se reportera à la section Indexation de la documentation pour approfondir cette notion. On retiendra que l'action d'indexer (au sens SDX du terme) correspond à identifier un document selon certains critères (ceux qui seront employés pour le retrouver) dans une collection de document (i.e. une base de documents dans le vocabulaire SDX). La suppression de document correspond à l'élimination de ces informations de la dite collection, ceci n'impliquant pas forcément la suppression physique du document selon le type de l'entrepôt (voir la section Les entrepôts pour approfondir cette notion). ## `sdx:uploadDocument` `sdx:uploadDocument` permet de lancer l'indexation d'un seul document.
Code implémentant cette action | `sdx-actions.xsl`
Contexte d'utilisation | N'importe où dans un `sdx:page`.
Contenu éventuel | `sdx:uploadDocument` peut contenir un élément `sdx:index` pour paramétrer une indexation ou directement un `sdx:pipeline` afin de construire un pipeline d'indexation dynamique. 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.
Tableau 1. Paramètres
Nom | Description | Elément correspondant |
--- | --- | --- | ---
`repo` | Identifiant l'entrepôt devant stocker les documents indexés. Par défaut, SDX prend l'identifiant de l'entrepôt défini comme entrepôt par défaut dans le fichier `application.xconf`. | `sdx:repo` | Facultatif (FIXME)
`base` | Identifiant la base de documents devant stocker l'indexation. Par défaut, SDX prend l'identifiant de la base définie comme base par défaut dans le fichier `application.xconf`. | `sdx:base` | Facultatif (FIXME)
`id` | Permet d'attribuer un identifiant au document que l'on désire indexer. | `sdx:id` | Facultatif
`type` | Spécifie le type du document. | `sdx:type` | Facultatif
`url` | Spécifie l'URL du document à indexer dans un entrepôt de type `URL`. | `sdx:url` | Obligatoire s'il n'y a pas `file`
`file` | Spécifie l'URL du document à indexer dans un entrepôt de type `File System`. | `sdx:file` | Obligatoire s'il n'y a pas `url`
`xml` | TODO | `sdx:xml` | Facultatif
`dom` | TODO | `sdx:dom` | Facultatif
Exemple 1. Indexation d'un document Le code suivant présente une page XSP activant la commande d'indexation de document. Les documents source, des documents XML, seront indexés dans la base `sdxworld`, dans un entrepôt `url`. Noter le test préalable sur l'appartenance de l'utilisateur courant au groupe "admins" que nous définissions comme le groupe des administrateurs de l'application courante.
    <sdx:page>
    	<sdx:userIsMember group="admin" >
          <sdx:uploadDocument base="sdxworld" repo="url" urlParam="url" type="text/XML" />
    	</sdx:userIsMember>
    </sdx:page>
## `sdx:uploadDocuments` sdx:uploadDocuments permet de lancer l'indexation d'un lot de documents réunis par une URL (un lieu de stockage ou une adresse Internet commune).
Code implémentant cette action | `sdx-actions.xsl`
Contexte d'utilisation | N'importe où dans un `sdx:page`.
Contenu éventuel | `sdx:uploadDocuments` peut contenir un élément `sdx:index` pour paramétrer une indexation ou directement un `sdx:pipeline` afin de construire un pipeline d'indexation dynamique. 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.
Tableau 2. Paramètres spécifiques
Nom | Description |
--- | --- | ---
`includes` | Identifie les éléments à inclure lors de l'indexation. | Facultatif
`excludes` | Identifie les éléments à exclure lors de l'indexation. | Facultatif
Tableau 3. Paramètres communs
Nom | Description | Elément correspondant |
--- | --- | --- | ---
`repo` | Identifiant l'entrepôt devant stocker les documents indexés. Par défaut, SDX prend l'identifiant de l'entrepôt défini comme entrepôt par défaut dans le fichier `application.xconf`. | `sdx:repo` | Facultatif (FIXME)
`base` | Identifiant la base de documents devant stocker l'indexation. Par défaut, SDX prend l'identifiant de la base définie comme base par défaut dans le fichier `application.xconf`. | `sdx:base` | Facultatif (FIXME)
`batch` | Modifie la taille des lots d'indexation (plus d'infos avec `sdx:index`). Par défaut, le lot est de 25 documents. | `sdx:index` | Facultatif
`dir` | Identifie le répertoire contenant les documents à indexer. | `sdx:dir` | Obligatoire s'il n'y a ni `url` ni `zip`
`url` | Identifie l'URL des documents à indexer. | `sdx:url` | Obligatoire s'il n'y a ni `zip` ni `dir`
`zip` | Identifie l'archive ZIP contenant les documents à indexer. | `sdx:zip` | Obligatoire s'il n'y a ni `dir` ni `url`
`type` | Spécifie le type des documents que l'on souhaite indexer. | `sdx:type` | Facultatif
Exemple 2. Indexation d'un lot de documents XML Le code suivant présente l'emploi de `sdx:uploadDocuments` dans une page XSP. On attend certaines informations pour déclencher l'indexation : la base de documents dans laquelle on souhaite effectuer l'indexation ; le répertoire contenant les documents à indexer. On imagine que ce dernier contient non seulement les articles au format XML, mais également les images qui les illustrent. Les attributs `includes` et `excludes` sont utilisés ici dans un but pédagogique. Le premier spécifie que seul des documents XML devront être indexés ; le second spécifie que les images au format JPEG ne devront pas être prises en compte. On imagine bien que le premier est amplement suffisant dans ce cas précis !
    <sdx:page>
    	<sdx:uploadDocuments baseParam="base" dirParam="dir" includes="*.xml" excludes="*.jpg" />
    </sdx:page>
Il manque bien entendu des informations à SDX pour réaliser pleinement cette indexation, par exemple le nom de l'entrepôt, le pipeline d'indexation. Ces paramètres, absents ici, doivent être définis dans le fichier `application.xconf`. ## `sdx:deleteDocument`(CHECK) `sdx:deleteDocument` est l'action contraire de `sdx:uploadDocument`. Elle sert à retirer un document (ou seulement sa référence suivant le type de l'entrepôt) d'une collection de documents (i.e. une base de documents dans le vocabulaire SDX). Noter que la suppression d'un document entraîne la suppression de ses documents attachés (voir la section Documents attachés) et de ses sous-documents (voir la section Fragmentation de documents).
Code implémentant cette action | `sdx-actions.xsl`
Contexte d'utilisation | N'importe où dans un `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.
Tableau 4. Paramètres spécifiques
Nom | Description |
--- | --- | ---
`delete` | Confirmation de suppression du document de la base de documents. Ce paramètre admet deux valeurs : `false` et `true`. | Obligatoire
Tableau 5. Paramètres communs
Nom | Description | Elément correspondant |
--- | --- | --- | ---
`id` | Identifiant du document à retirer de la base de document. | `sdx:id` | Obligatoire
`base` | Identifiant de la base de documents. Par défaut, il s'agit de la base de documents courante. | `sdx:base` | Facultatif
`app` | Identifiant de l'application. Par défaut, il s'agit de l'application courante. | `sdx:app` | Facultatif
`appByPath` | Indique la partie de l'URL qui suit "`sdx/`" dans une installation standard, par exemple "`sdxtest`". | `sdx:app` | Facultatif
Exemple 3. Retirer un document de la collection L'exemple suivant présente une page XSP activant la commande de suppression de documents. Aucune information n'est fourni (noms de l'application et de la base de document) hormis le nom du paramètre HTTP apportant l'identifiant du document que l'on souhaite retirer de la collection de documents. La page réagira ainsi à une URL du type : `{serveur SDX}/sdxtest/del.xsp?id=ar5664a`. Ceci supprimera toute l'information reliée au document `ar5664a` de la base de documents courante, de l'application courante. Ce document ne sera plus « cherchable » par SDX.
    <sdx:page>
    	<sdx:deleteDocument idParam="id" >
    		<sdx:fallback>
    			<message type="echec_suppression"/>
    		</sdx:fallback>
    	</sdx:deleteDocument>
    </sdx:page>
Noter l'emploi de `sdx:fallback` devant afficher un message au cas où la suppression n'aurai pas réussi. ## `sdx:deleteDocuments` ### Description `sdx:deleteDocuments` permet de supprimer toutes les informations d'un lot de documents d'une collection. Elle agit ainsi à l'opposé de `sdx:uploadDocuments`. Elle diffère de son homologue `sdx:deleteDocument` par le fait qu'elle isole le lot de documents à supprimer de la base de documents en faisant appel à une requête. Ainsi, elle peut contenir toutes les actions de construction de requêtes proposées par l'API-XSP de SDX.
Code implémentant cette action | `sdx-actions.xsl`
Contexte d'utilisation | N'importe où dans un `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 Tableau 6. Paramètres spécifiques
Nom | Description |
--- | --- | ---
`delete` | Confirmation de suppression du document de la base de documents. Ce paramètre admet deux valeurs : `false` et `true`. | Obligatoire
Tableau 7. Paramètres communs
Nom | Description | Elément correspondant |
--- | --- | --- | ---
`qid` | Identifiant de la requête que l'on souhaite reprendre. Cet identifiant est donné (automatiquement ou statiquement) à chaque exécutée ; il n'est conservé en mémoire que durant la session de l'utilisateur (cf. `sdx:results` pour approfondir ce point). | `sdx:results` | Facultatif
`page` | Numéro de la page de résultat que l'on souhaite appeler. | `sdx:results` | Facultatif
`p` | Idem. Déprécié | `sdx:results` | Facultatif
`hpp` | Spécifie le nombre de réponses que devra contenir la page de résultats. Par défaut, ce nombre est fixé à 20 (cf. fichier `sdx.xsl`). Dans le cas de la suppression d'un lot de documents, il convient de s'assurer que l'ensemble des documents sont inclus dans le résultat (`hpp="-1"`) | `sdx:hpp` | Facultatif
## Exemple Example 4. Suppression d'un lot de document dans deux bases L'exemple suivant présente une page XSP chargée de supprimer l'ensemble des documents de deux bases de documents. Ce n'est certainement pas la seule manière d'arriver à ce résultat ; cette page à toutefois l'avantage de fonctionner sans attendre aucune information extérieure (e.g., le qid d'une requête effectuer à partir d'une autre page XSP). Pour isoler le lot de documents, on emploie l'action de requête `sdx:fieldQuery`.
    <sdx:page>
    	<sdx:deleteDocuments delete="true" hpp="-1">
    		<sdx:locations>
    			<sdx:location base="docs" />
          <sdx:location base="da" />
    		</sdx:locations>
    		<sdx:fieldQuery field="sdxall" value="-1"/>
    	</sdx:deleteDocuments>
    </sdx:page>
Noter que `sdx:deleteDocuments` n'admet que les actions de construction de requêtes et non pas les actions d'exécution de requêtes (cf. Exécution des requêtes). Et bien que `sdx:fieldQuery` admet des informations de localisation (i.e., on peut employer directement un `base="..."` dans un `sdx:fieldQuery`), il devient indispensable d'employer `sdx:locations` et `sdx:location` pour localiser les deux bases de documents. ## `sdx:index` `sdx:index` permet de définir les paramètres d'indexation. Utilisée par les deux éléments déclencheur de l'indexation (`sdx:uploadDocument` et `sdx:uploadDocuments`), elle permet à ces deux actions de définir des pipelines d'indexation (cf. `sdx:pipeline`). On se reportera aux sections Indexation et Pipeline d'indexation pour approfondir ces notions. Depuis SDX version 2..2, il est possible de déterminer le comportement de SDX lors de l'indexation de documents possédant le même identifiant (e.g., on souhaite indexer la nouvelle version d'un document).
Code implémentant cette action | `sdx-actions.xsl`
Contexte d'utilisation | L'action `sdx:index` ou ses attributs peuvent être employés avec `sdx:uploadDocument` ; `sdx:uploadDocuments`
Contenu éventuel | `sdx:index` contient les éléments de création d'un pipeline d'indexation : `sdx:pipeline` et `sdx:transformation`.
Tableau 8. Paramètres spécifiques
Nom | Description |
--- | --- | ---
`show` | Gestion des informations sur le résultat de l'indexation. Les valeurs autorisées sont : summary Sommaire complet. failures Nombre d'échec. additions Nombre de documents ajoutés. | Facultatif
`batch` | SDX indexe en mémoire un lot de documents puis ensuite écrit l'index, l'unifie avec le précédent et optimise l'index. Par défaut, ce lot est de 25 documents. Ce paramètre permet de modifier la taille de ce lot de document. | Facultatif
`sameId` | Ce paramètre permet de spécifier la manière dont SDX doit gérer les documents qui lui sont soumis avec le même identifiant (e.g., lorsque l'on cherche indexer la nouvelle version d'un document). Ce paramètre ne concerne que les documents "maîtres". Le comportement d'indexation des documents attachés (e.g., les images) est déterminé par le paramètre `attachedDocumentSameId`. Trois valeurs sont possibles : `replace` SDX supprime l'ancien document et le remplace par le nouveau document. C'est le comportement par défaut. `ignore` SDX ignore le nouveau document ; il conserve donc l'ancien document. `error` SDX stoppe l'indexation en provoquant une erreur dûe à la violation de la règle d'unicité des identifiants. | Facultatif
`attachedDocumentSameId` | Ce paramètre agit de la même manière que le précédent. Il est toutefois spécifique aux documents attachés. Ainsi, il est possible d'établir deux règles distinctes pour les documents maîtres et pour les documents attachés. Quatre valeurs sont possibles : `refresh` SDX supprime l'ancien document attaché de l'entrepôt et ajoute le nouveau document attaché. Les liens avec l'ancien document "maître" sont conservés. SDX ajoute des liens avec le nouveau "maître". C'est le comportement par défaut. `replace` SDX supprime l'ancien document attaché de l'entrepôt et ajoute le nouveau document attaché. Les liens avec l'ancien document "maître" sont supprimés. SDX crée des liens avec le nouveau document "maître". `ignore` SDX ignore le nouveau document attaché. Aucun changement n'est apporté. `error` SDX stoppe l'indexation en provoquant une erreur dûe à la violation de la règle d'unicité des identifiants. | Facultatif
Exemple 5. Impossible d'indexer une nouvelle version de document Dans l'exemple suivant, on souhaite modifier le comportement par défaut de SDX face à l'indexation de document possédant le même identifiant. On ne veut pas permettre le remplacement de document ; il est seulement possible d'en ajouter ou d'en retirer.
    <sdx:page>
    	<sdx:uploadDocuments appParam="a" baseParam="b" repoParam="r" dirParam="d" zipParam="z" includes="*.xml" excludes="*.jpg" sameId="ignore">
    		<sdx:parameter name="attachedDocumentSameId" value="ignore" />
    	</sdx:uploadDocuments>
    </sdx:page>
On notera les deux syntaxes proposées ici pour passer les paramètres `sameId` et `attachedDocumentSameId`, à l'aide d'un attribut de `sdx:uploadDocuments` ou à l'aide de `sdx:parameter`.
| Auteur : Malo Pichot ( AJLSM ) - 2004-05-18

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