Il y a 389 articles et 19 utilisateurs inscrits (ce bandeau est défini dans MediaWiki:Sitenotice)
« SDX Création de Base SDX » : différence entre les versions
m →Introduction : h3 -> h2 |
→Définition du schéma de la base : {{path|maBase-documentbase.xconf}} : ajout section Déclaration des champs de la base : {{path|maBase-fieldlist.xconf}} |
||
| Ligne 64 : | Ligne 64 : | ||
La ligne {{var|21}} quand à elle revnoi vers le fichier {{path|{{appliPleade}}/module-eadeac/conf/{{var|maBase}}-documentbase.xconf}} qui déclare la base, telle que détaillé dans la section [[#Définition du schéma de la base : maBase-documentbase.xconf|déclaration de la base]]. | La ligne {{var|21}} quand à elle revnoi vers le fichier {{path|{{appliPleade}}/module-eadeac/conf/{{var|maBase}}-documentbase.xconf}} qui déclare la base, telle que détaillé dans la section [[#Définition du schéma de la base : maBase-documentbase.xconf|déclaration de la base]]. | ||
== | == Déclaration de la base et de ses ressources : {{path|maBase-documentbase.xconf}} == | ||
La déclaration de la base se structure de la façon suivante : | La déclaration de la base se structure de la façon suivante : | ||
* la base ({{tag|documentBase}}) | * la base ({{tag|documentBase}}) | ||
| Ligne 126 : | Ligne 126 : | ||
</oai-repository> | </oai-repository> | ||
</documentBase> | </documentBase> | ||
</syntaxhighlight> | |||
== Déclaration des champs de la base : {{path|maBase-fieldlist.xconf}} == | |||
On préférera déclarer les champs de façon externes dans le but d'améliorer la lisibilité des documents XML et en facilité la correction. Le fichier décrivant les champs de la base doit se situer dans {{path|{{var|PleadeDir}}/module-eadeac/conf/maBase-fieldlist.xconf}}. Ce fichier se contient les informations suivantes : | |||
* un analyseur définit par l'attribut {{attr|analyzerConf}} de l'élément racine {{tag|fieldList}}, | |||
* la liste champs de recherche, défini par des éléments {{tag|field}}, chacun ayant au moins : | |||
** un nom {{attr|name}}, | |||
** et un {{attr|type}} ({{var|field}} vs. {{var|word}} vs. {{var|unindexed}}), | |||
<syntaxhighlight lang="xml"> | |||
<fieldList id="bm-orleans-fieldslist" | |||
xmlns="http://www.culture.gouv.fr/ns/sdx/sdx" | |||
analyzerConf="/sdx/resources/conf/analysis/fr.xml" | |||
xml:lang="fr" | |||
> | |||
<field name="REF" type="field" /> | |||
<field name="PATRONYME" type="field" brief="true"/> | |||
<field name="PRENOMS" type="field" brief="true"/> | |||
<field name="SURNOM" type="field" /> | |||
<field name="ANNEE_NAISSANCE" type="field" brief="true"/> | |||
<field name="COMMUNE_NAISSANCE" type="unindexed" brief="true"/> | |||
<field name="COMMUNE_DOMICILE" type="unindexed" brief="true"/> | |||
<field name="COLLECTION" type="field" /> | |||
<field name="SUBDIVISION" type="field" /> | |||
<field name="COTE" type="field" /> | |||
<!-- Champs Pleade --> | |||
<field name="searchable" type="field"/> | |||
<field name="fulltext" type="word"/> | |||
<field name="base" type="unindexed" brief="true" /> | |||
</fieldList> | |||
</syntaxhighlight> | </syntaxhighlight> | ||
Version du 15 mai 2012 à 15:33
Introduction
Ce document à pour but d'expliquer de façons pratique (à travers des exemples) la création et l'exploitation de bases SDX documentaires dans Pleade.
À l'issue de ce document, l'utilisateur devra être capable de créer une nouvelle base documentaire dans Pleade, d'indexer des documents ; et d'établir sur cette nouvelle base les différents service qu'offre Pleade pour la base EAD (recherche, subset, navindex, suggest, etc.).
La création des bases dans Pleade est native ; elle se fait suivant un ensemble d'étapes bien déterminées. Ces dernières peuvent à leur tour être subdivisées en plusieurs autres étapes (exemple l'étape de publication d'un document dans la base EAD est subdivisé en quatorze sous étapes).
Ce document n'a pas pour but d'expliquer la création d'un système d'indexation aussi complexe que l'EAD dans Pleade, mais, il explique la gestion de l'indexation d'un forme de document simple (profondeur 1).
Pré-requis
Dans la suite de ce document nous allons supposé vouloir indexer une base KML dont un exemple de document à la structure suivante :
<?xml version="1.0" encoding="UTF-8"?>
<NOTICE>
<GFIELD>Registre matricule</GFIELD>
<COLLECTION>Registre matricule</COLLECTION>
<SUBDIVISION>bureau de Langres</SUBDIVISION>
<REF>00001</REF>
<PATRONYME>Terrasse</PATRONYME>
<PRENOMS>François Hippolyte</PRENOMS>
<SURNOM>non renseigné</SURNOM>
<SUPPLEANT>non renseigné</SUPPLEANT>
<ANNEE_NAISSANCE>1849</ANNEE_NAISSANCE>
<COMMUNE_NAISSANCE>Bugnières</COMMUNE_NAISSANCE>
<COMMUNE_DOMICILE>Bugnières</COMMUNE_DOMICILE>
<INTITULE_DOCUMENT>Registre matricule, bureau de Langres</INTITULE_DOCUMENT>
<COTE>R 741/01</COTE>
<IDENTIFIANT_PREMIERE_IMAGE>FRAD052_R0757_01_001.jpg</IDENTIFIANT_PREMIERE_IMAGE>
</NOTICE>
Déclaration de la base dans l'application
Cette première phase consiste à indiquer à Pleade le nom de la nouvelle base ainsi que les configurations nécessaires pour l'indexation (identifiant de la base, champs à index, structure des index, etc.). C'est dans cette étape aussi qu'on défini les entrepôts OAI pour cette base. Pour cela, on modifiera le fichier <app>/module-eadeac/conf/application.xconf. Ci-dessous, un exemple de déclaration dans un Pleade fraichement installé :
<!--+ | Configuration de l'application SDX Pleade
+--><application xmlns="http://www.culture.gouv.fr/ns/sdx/sdx" indexation-logging-level="1" id="" xml:lang="fr" sessionObjectLimit="20">
<!-- Catalog file for EAD -->
<catalogs>
<catalog src="dtd/catalog"/>
</catalogs>
<admin groupId="admins" userId="admin" userPassword="Pleade3" />
<!-- Inclure la liste des champs Lucene -->
<fieldLists>
<xi:include href="cocoon:/conf/ead-fieldlist.xconf" xmlns:xi="http://www.w3.org/2001/XInclude" />
<xi:include href="cocoon:/conf/eac-fieldlist.xconf" xmlns:xi="http://www.w3.org/2001/XInclude" />
<xi:include href="cocoon:/conf/maBase-fieldlist.xconf" xmlns:xi="http://www.w3.org/2001/XInclude" />
</fieldLists>
<!-- Les bases de documents -->
<documentBases>
<xi:include href="cocoon:/conf/ead-documentbase.xconf" xmlns:xi="http://www.w3.org/2001/XInclude" />
<xi:include href="cocoon:/conf/eac-documentbase.xconf" xmlns:xi="http://www.w3.org/2001/XInclude" />
<!-- déclaration base maBase-->
<xi:include href="cocoon:/conf/maBase-documentbase.xconf" xmlns:xi="http://www.w3.org/2001/XInclude" />
</documentBases>
</application>
La ligne 13 indique l'emplacement du fichier décrivant la liste des champs de la base, ici <app>/module-eadeac/conf/maBase-fieldlist.xconf. Son contenu est détaillée dans la section Ce fichier décrit :
- Les champs de recherche,
- leurs types (field vs. word vs. unindexed).
La ligne 21 quand à elle revnoi vers le fichier <app>/module-eadeac/conf/maBase-documentbase.xconf qui déclare la base, telle que détaillé dans la section déclaration de la base.
Déclaration de la base et de ses ressources : maBase-documentbase.xconf
La déclaration de la base se structure de la façon suivante :
- la base (<documentBase>)
- son identifiant (id),
- son entrepôt de donnée (<repository>)
- le type de dépôt (type).
- et ses ressources associées :
- la liste des champs décrit dans <fieldList> (souvent externalisés via un <xi:include>),
- la feuille d'indexatione de la base <transformation>
- les entrepôts OAI (<oai-repository>).
Voici un exemple avec une déclaration interne des champs de la base (cf. éléments <field>) :
<documentBase id="maBase" type="lucene" keepOriginalDocuments="false">
<!--L'entrepôt pour les documents-->
<repositories>
<repository type="FS" id="maBase-docs" baseDirectory="docs/maBase" depth="2" extent="50" default="true" />
</repositories>
<!-- Déclaration de la liste des champs Lucene (d'indéxation) -->
<fieldList id="maBase-fieldlist" analyzerConf="analysis/fr.xml" xml:lang="fr">
<field name="REF" type="field" />
<field name="PATRONYME" type="field" brief="true"/>
<field name="PRENOMS" type="field" brief="true"/>
<field name="SURNOM" type="field" />
<field name="ANNEE_NAISSANCE" type="field" brief="true"/>
<field name="COMMUNE_NAISSANCE" type="unindexed" brief="true"/>
<field name="COMMUNE_DOMICILE" type="unindexed" brief="true"/>
<field name="COLLECTION" type="field" />
<field name="SUBDIVISION" type="field" />
<field name="COTE" type="field" />
<!-- Champs Pleade -->
<field name="searchable" type="field"/>
<field name="fulltext" type="word"/>
<field name="base" type="unindexed" brief="true" />
</fieldList>
<!-- Les étapes de transformation des documents au moment de la publication. -->
<index>
<pipeline id="index-bdmaBase">
<!-- Remplissage des champs -->
<transformation id="fields" type="SAXONXSLT" src="../xsl/publication/maBase/maBase-fields.xsl"/>
</pipeline>
</index>
<!-- Entrepôt OAI : NB : les champs vides seront remplies par le parametres.xconf -->
<oai-repository name="" baseURL="" adminEmail="" noPerResponse="" id="maBase-oai" default="true">
<!-- Le subset sera rempli en fonction du paramètre records -->
<oai-subset>
</oai-subset>
<!-- Format OAI-DC -->
<oai-format name="OAI Dublin core" metadataPrefix="oai_dc"
namespace="http://www.openarchives.org/OAI/2.0/oai_dc/"
schemaUrl="http://www.openarchives.org/OAI/2.0/oai_dc.xsd"
>
<pipeline id="to-oaidc">
<transformation id="oai-dc" type="XSLT" src="oai-repository/ead/qdc/oai-dc.xsl" />
</pipeline>
</oai-format>
</oai-repository>
</documentBase>
Déclaration des champs de la base : maBase-fieldlist.xconf
On préférera déclarer les champs de façon externes dans le but d'améliorer la lisibilité des documents XML et en facilité la correction. Le fichier décrivant les champs de la base doit se situer dans PleadeDir/module-eadeac/conf/maBase-fieldlist.xconf. Ce fichier se contient les informations suivantes :
- un analyseur définit par l'attribut analyzerConf de l'élément racine <fieldList>,
- la liste champs de recherche, défini par des éléments <field>, chacun ayant au moins :
- un nom name,
- et un type (field vs. word vs. unindexed),
<fieldList id="bm-orleans-fieldslist"
xmlns="http://www.culture.gouv.fr/ns/sdx/sdx"
analyzerConf="/sdx/resources/conf/analysis/fr.xml"
xml:lang="fr"
>
<field name="REF" type="field" />
<field name="PATRONYME" type="field" brief="true"/>
<field name="PRENOMS" type="field" brief="true"/>
<field name="SURNOM" type="field" />
<field name="ANNEE_NAISSANCE" type="field" brief="true"/>
<field name="COMMUNE_NAISSANCE" type="unindexed" brief="true"/>
<field name="COMMUNE_DOMICILE" type="unindexed" brief="true"/>
<field name="COLLECTION" type="field" />
<field name="SUBDIVISION" type="field" />
<field name="COTE" type="field" />
<!-- Champs Pleade -->
<field name="searchable" type="field"/>
<field name="fulltext" type="word"/>
<field name="base" type="unindexed" brief="true" />
</fieldList>
Externalisation de la liste des champs : maBase-fieldlist.xconf
Pour plus de clarté, les champs d'indexations peuvent être déclarer dans un fichier maBase-fieldlist-base.xconf. Dans ce cas, il faudra adapter le contenu du fichier application.xconf :
Exemple :
<!-- Inclure la liste des champs Lucene -->
<fieldLists>
<xi:include href="cocoon:/conf/ead-fieldlist.xconf" xmlns:xi="http://www.w3.org/2001/XInclude" />
<xi:include href="cocoon:/conf/eac-fieldlist.xconf" xmlns:xi="http://www.w3.org/2001/XInclude" />
<xi:include href="cocoon:/conf/maBase-fieldlist.xconf" xmlns:xi="http://www.w3.org/2001/XInclude" />
</fieldLists>
La fichier maBase-fieldlist-base.xconf est ensuite renseigné à l'image du fichier ead-fieldlistlist-base.xconf.
Plusieurs points sont à noter concernant le document maBase-documentbase.xconf : Il apparaît clairement ici qu'un travail de fond est nécessaire pour pouvoir définir les différent champs relatifs à ce document. Pour la création et la configuration des champs se référer à la documentation de Pleade correspondante.
Chaque document à indexer doit posséder une référence unique qui va lui servir d'identifiant dans la base. Cette référence peut être soit fournie par le document (dans notre cas le champs <REF> ou le champs <eadid> dans le cas d'un document EAD) ; soit générer automatiquement durant l'indexation (voire suite du document).
Les mécanismes de gestion avancés des champs et index pour l'EAD (champs agrégées, champs multivalués, etc.) ne sont pas disponibles par défaut. Il faut les implémenter indépendamment comme décrit dans la section suivante, nous détaillerons un exemple d'implémentations de champs agrégées pour la base maBase.
Dans le fichier maBase-documentbase.xconf, la section documentBase/index/pipeline indique les fichiers qui permette de modifier successivement (mécanisme map:transform de cocoon) le document final à indexer par le SDX. Dans le plus simple des cas, nous avons uniquement besoin d'un transformateur (maBase-fields.xsl) qui va s'occuper de remplir les différents champs déclarés.
Dans cette configuration, toute les données d'indexation sont stockées en base de donnée type système de fichier (FS). Dans la section paramétrage avancé, nous allons présenter une configuration supplémentaire pour stocker les données d'indexation dans un SGBD relationnel.
Mise en place de l'indexation
Dans cette section, nous allons présenté les différents mécanismes à mettre en place pour pouvoir indexer un document de type kml. Ces mécanismes consistent essentiellement à la mise en place de pipelines. Ces derniers seront à placer dans le fichier local.xmap.
Remarques : Pour plus de clarté, les fichiers sources (.xsl, .xsp, etc.) des pipelines de cette section seront présentés dans la section Annexe.
Les mécanismes d'authentifications seront présentés dans la section paramétrage avancés.
Formulaire de publication
Mise en place d'un formulaire de publication simple dans Pleade. On rajoutera le code suivant dans un sitemap, si vous ne savait pas dans quel sitemap le placer, ajouter le à local.xmap :
<map:match pattern="edit/kml\-publish\-form\.(xsp|debug)" id="main-kml-edit-publish-form" type="regexp">
<map:aggregate element="aggregate">
<map:part src="module-eadeac/xsp/kml-publish-form.xhtml" element="template"/>
<map:part src="cocoon://edit/functions/edit-publish/kml-documents.xml"/>
<map:part src="cocoon:/edit/functions/edit-publish/get-properties-publication.xml"/>
<map:part src="cocoon:/edit/functions/edit-publish/get-properties-display.xml"/>
<map:part src="cocoon:/edit/functions/list-search-forms.xml" element="search-forms"/>
<map:part src="cocoon:/edit/functions/edit-publish/frag-method.xml"/>
<map:part src="cocoon:/edit/functions/edit-publish/toc-method.xml"/>
<map:part src="cocoon:/edit/functions/edit-publish/notsearchable-method.xml"/>
<map:part src="cocoon:/edit/functions/edit-publish/title-method.xml"/>
<map:part src="cocoon:/edit/functions/edit-publish/index-global.xml"/>
<map:part src="cocoon:/edit/functions/edit-publish/inheritance.xml"/>
<map:part src="cocoon:/edit/functions/edit-publish/index-local.xml"/>
<map:part src="cocoon://functions/get-subset-hierarchy.xml" element="subsets"/>
</map:aggregate>
<map:select type="simple">
<map:parameter name="value" value="{1}"/>
<map:when test="xsp">
<map:transform type="xslt2" src="module-eadeac/xsl/kml-publish-form.xsl">
<map:parameter name="locale" value="{request-attr:locale}"/>
<map:parameter name="theme" value="{baselink:sitemapBaseLink}../"/>
<map:parameter name="tmpdir" value="{contextpath:${Pleade.csv-tmp-dir}}"/>
</map:transform>
<map:act type="locale">
<map:transform type="i18n">
<map:parameter name="locale" value="{locale}"/>
<map:parameter name="default-catalogue-id" value="module-eadeac-edit"/>
</map:transform>
</map:act>
<map:serialize type="xhtml"/>
</map:when>
<map:otherwise>
<map:serialize type="xml"/>
</map:otherwise>
</map:select>
</map:match>
Paramétrages avancés
À faire :
- Base de donnée sdx-csv-repositry
- Authentification dans les pipelines d'indexation