Il y a 389 articles et 19 utilisateurs inscrits (ce bandeau est défini dans MediaWiki:Sitenotice)

Recheche fédérée

De AJLSM
Version datée du 13 juillet 2012 à 12:50 par Groche (discussion | contributions) (création+catégories)
(diff) ← Version précédente | Version actuelle (diff) | Version suivante → (diff)
Aller à la navigation Aller à la recherche

La mise en place de la recheche fédérée consiste :

  1. définir un formulaire de recherche attaquant les différentes bases ;
  2. définir un affichage unifié servant les résultats hétérogènes des bases.

Formulaire de recherche

[modifier | modifier le wikicode]

On construira notre formulaire de recherche fédérée en se basant sur le formulaire de recheche simple (<app>/module-eadeac/conf/search-forms/simple.xconf).

Type de formulaire et base de travail

[modifier | modifier le wikicode]
Important :
Les mécanismes de construction des formulaires simples et avancées ne sont pas les même :
  • Les formulaires simple utilisent l'attribut base de l'élément <item> décrit dans le fichier <app>/module-eadeac/conf/menus.xconf ;
  • Les formulaires avancées utilisent l'attribut documents de l'élément <form> décrit dans le fichier <app>/module-eadeac/conf/search-forms/monFormulaire.xconf.

Création du Formulaire fédéré

[modifier | modifier le wikicode]

Il suffit de modifier :

  1. la page d'action du formulaire (action) ;
  2. les bases de documents concernées par la fédération (documents).
<!--
	Les bases à attaquer sont à définir dans le fichier menus.xconf,
	avec l'attribut @base de l'élément <item> déclarant le formulaire simple
-->
<form
	action="federee-results.html"
	max-chars="50"
	documents="pas-les-bases-dans-formulaire-simple"
>
	<key type="text" field="fulltext" />
</form>

Modification des menus

[modifier | modifier le wikicode]

Il faut également penser à modifier le fichier <app>/module-eadeac/conf/menus.xconf pour pouvoir accéder au formulaire.

	<item type="txt">
		<i18n:text key="menu.search.federee">menu.search.federee</i18n:text>
		<item id="federee-search"
			type="simple-search"
			action="federee-results.html"
			base="ead mets bmoxml"
			method="get"
		/><!-- Ces trois attributs sont facultatifs, ici ce sont leurs valeurs par défaut -->
	</item>


Mise en place du pipeline

[modifier | modifier le wikicode]

Dans le cas d'un formulaire fédéré comme dans le cas de formulaire spécifique où l'on souhaite faire un affichage particulier, il nous faut surcharger le comportement normal de Pleade. Cela nous permettra de faire divers traitement avant de servir le résultat de la recherche. On placera généralement notre surcharge dans le fichier app/local.xmap.

<map:pipeline id="recherche-federee">
<!--
	Résultats de recherche fédérée
-->
	<map:match pattern="federee\-results\.(xsp|debug)" type="regexp">
		<map:generate type="xsp" src="context:/module-eadeac/xsp/sdx-results.xsp">
<!-- 				<map:parameter name="base" value="bmoxml" /> -->
			<map:parameter name="path-sdxapp" value="${pleade.path-sdxapp}" />
			<map:parameter name="results-max" value="{global:ead-max-results}" />
			<map:parameter name="list-sep" value="${pleade.eadeac.list-sep}" />
			<map:parameter name="thesx-url" value="${pleade.thesx-url}" />
		</map:generate>
<!--				Recalcul la pagination si besoins-->
<!-- 				<map:transform type="xslt2" src="context://module-eadeac/xsl/rebuild-pagination.xsl"> -->
			<!-- Surcharge locale -->
			<map:transform type="xslt2" src="cocoon://rebuild-pagination.xsl">
				<map:parameter name="p2" value="{request-param:p}" />
				<map:parameter name="hpp2" value="{request-param:hpp}" />
<!-- 					<map:parameter name="fede" value="{request-param:fede}" /> -->
		</map:transform>
<!-- Les map:transform suivant sont utiles pour la recherche fédérée :
del-noncsv-results.xsl
tri-pagenate-results.xsl
-->
		<!--     	<map:transform type="xslt2" src="context://module-eadeac/xsl/del-noncsv-results.xsl" /> -->
		<!--	 fabrique la pagination -->
		<!--	 <map:transform type="xslt2" src="context://module-eadeac/xsl/tri-pagenate-results.xsl"> -->
		<!--	     <map:parameter name="p2" value="{request-param:p}" /> -->
		<!--	     <map:parameter name="hpp2" value="{request-param:hpp}" /> -->
		<!--	     <map:parameter name="fede" value="{request-param:fede}" /> -->
		<!--	 </map:transform> -->
		<map:select type="simple">
			<map:parameter name="value" value="{1}" />
			<map:when test="xsp">
				<map:transform type="xsl" src="context:/module-eadeac/xsl/federee-results.xsl">
<!-- 						<map:parameter name="base" value="bmoxml" /> -->
					<map:parameter name="divID" value="{request-param:divID}" />
					<map:parameter name="formName" value="{request-param:name}" />
					<map:parameter name="active-basket" value="{global:eadeac-active-basket}" />
					<map:parameter name="public-url" value="${pleade.public-url}" />
					<!--		<map:parameter name="mode" value="{request-param:mode}" /> -->
					<!--		 <map:parameter name="list-sep" value="${pleade.eadeac.list-sep}" /> -->
					<!--		<map:parameter name="locale" value="{request-attr:locale}" /> -->
					<!--		<map:parameter name="get-cdc-results-script" value="{request-param:get-cdc-results-script}" /> -->
					<!--		<map:parameter name="url-interne" value="${pleade.url-interne}" /> -->
					<!--	     <map:parameter name="fede" value="{request-param:fede}" /> -->
				</map:transform>
				<!--	 <map:transform type="xslt2" src="context://module-eadeac/xsl/tri-cleaner.xsl" /> -->
				<map:act type="locale">
					<map:transform type="prefixI18n-normal">
						<map:parameter name="locale" value="{locale}" />
					</map:transform>
				</map:act>
				<map:transform type="xslt2" src="context://module-eadeac/xsl/results-stats.xsl" />
				<map:serialize type="xhtml" />
			</map:when>
			<map:otherwise>
				<map:serialize type="xml" />
			</map:otherwise>
		</map:select>
	</map:match>
</map:pipeline>

Affichage unifié

[modifier | modifier le wikicode]