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


SDX

Indexation ou suppression de documents

Liste des actions décrites dans cette page :

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:uploadDocumentIndexer un document.
sdx:uploadDocumentsIndexer un lot de documents.
Supprimer les documents
sdx:deleteDocumentSupprimer un document.
sdx:deleteDocumentsSupprimer 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 actionsdx-actions.xsl
Contexte d'utilisationN'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

NomDescriptionElément correspondant 
repoIdentifiant 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:repoFacultatif (FIXME)
baseIdentifiant 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:baseFacultatif (FIXME)
idPermet d'attribuer un identifiant au document que l'on désire indexer.sdx:idFacultatif
typeSpécifie le type du document.sdx:typeFacultatif
urlSpécifie l'URL du document à indexer dans un entrepôt de type URL.sdx:urlObligatoire s'il n'y a pas file
fileSpécifie l'URL du document à indexer dans un entrepôt de type File System.sdx:fileObligatoire s'il n'y a pas url
xmlTODOsdx:xmlFacultatif
domTODOsdx:domFacultatif

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 actionsdx-actions.xsl
Contexte d'utilisationN'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

NomDescription 
includesIdentifie les éléments à inclure lors de l'indexation.Facultatif
excludesIdentifie les éléments à exclure lors de l'indexation.Facultatif

Tableau 3. Paramètres communs

NomDescriptionElément correspondant 
repoIdentifiant 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:repoFacultatif (FIXME)
baseIdentifiant 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:baseFacultatif (FIXME)
batchModifie la taille des lots d'indexation (plus d'infos avec sdx:index). Par défaut, le lot est de 25 documents.sdx:indexFacultatif
dirIdentifie le répertoire contenant les documents à indexer.sdx:dirObligatoire s'il n'y a ni url ni zip
urlIdentifie l'URL des documents à indexer.sdx:urlObligatoire s'il n'y a ni zip ni dir
zipIdentifie l'archive ZIP contenant les documents à indexer.sdx:zipObligatoire s'il n'y a ni dir ni url
typeSpécifie le type des documents que l'on souhaite indexer.sdx:typeFacultatif

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 actionsdx-actions.xsl
Contexte d'utilisationN'importe où dans un sdx:page.
Contenu éventuelDes 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

NomDescription 
deleteConfirmation de suppression du document de la base de documents. Ce paramètre admet deux valeurs : false et true.Obligatoire

Tableau 5. Paramètres communs

NomDescriptionElément correspondant 
idIdentifiant du document à retirer de la base de document.sdx:idObligatoire
baseIdentifiant de la base de documents. Par défaut, il s'agit de la base de documents courante.sdx:baseFacultatif
appIdentifiant de l'application. Par défaut, il s'agit de l'application courante.sdx:appFacultatif
appByPathIndique la partie de l'URL qui suit "sdx/" dans une installation standard, par exemple "sdxtest".sdx:appFacultatif

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 actionsdx-actions.xsl
Contexte d'utilisationN'importe où dans un sdx:page.
Contenu éventuelDes 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

NomDescription 
deleteConfirmation de suppression du document de la base de documents. Ce paramètre admet deux valeurs : false et true.Obligatoire

Tableau 7. Paramètres communs

NomDescriptionElément correspondant 
qidIdentifiant 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:resultsFacultatif
pageNuméro de la page de résultat que l'on souhaite appeler.sdx:resultsFacultatif
pIdem. Dépréciésdx:resultsFacultatif
hppSpé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:hppFacultatif

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 actionsdx-actions.xsl
Contexte d'utilisationL'action sdx:index ou ses attributs peuvent être employés avec sdx:uploadDocument ; sdx:uploadDocuments
Contenu éventuelsdx:index contient les éléments de création d'un pipeline d'indexation : sdx:pipeline et sdx:transformation.

Tableau 8. Paramètres spécifiques

NomDescription 
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