Télécharger
    Installer
    Présentation
    Configuration
    Indexation
    Recherche
    OAI
    Javadoc
    Référence API-XSP
    Migration
    Schemas
    Performances
       Concepts
       Mesures
          AJLSM - 2003/01
             Serveur
            +Application <-
             Indexation
             Recherche


SDX

Description de l'application et des bases de documents

L'application de test sera éventuellement livrée entièrement, lorsque les tests seront complétés. En attendant, en voici les principales caractéristiques.

Création des documents

Les documents XML qui ont été utilisés pour ces tests sont fictifs mais réalistes. Ils ont été fabriqués de façon aléatoire mais selon une structure et des vocabulaires réalistes. Par exemple, les parties textuelles sont crées à partir d'un vocabulaire de 19 000 mots, lui-même extrait d'une base de 500 textes en archéologie. Cette technique permet d'une part d'obtenir de très grand nombre de documents, et d'autre part de s'assurer que les index produits ne sont pas trop volumineux, ce qui se produit lorsque les documents sont produits de manière purement aléatoire.

Application

L'application SDX est très simple ; elle comprend trois bases de documents pour autant de types de documents. L'application permet de faire des recherches simples, de naviguer dans les résultats, et d'afficher les documents (pour deux des trois bases). Eventuellement, d'autres fonctions seront ajoutées, en particulier les listes de termes et un formulaire de recherche avancée.

On peut ainsi dire que pour l'instant, les performances mesurées concernent plus particulièrement la recherche simple et la navigation dans les résultats de recherche.

Base 1 : petits documents

La première base contient 1 030 000 documents de petite taille (en moyenne mois de deux cent octets). Ces documents contiennent des informations à propos d'actes d'état civil, et ont une structure minimaliste semblable à celle-ci :

<?xml version="1.0" encoding="utf-8"?>
  <ca c="nom de la commune"
      d="année"
      id="identifiant"
      n="nom, prénom"
      t="type d'acte sur un caractère"/>

La définition de la base de documents est celle-ci :

  <sdx:documentBase id="db1" type="lucene" keepOriginalDocuments="true">
			<sdx:queryParser class="fr.gouv.culture.sdx.search.lucene.queryparser.DefaultQueryParser"/>
			
			<!-- We use a JDBC repository in order to easily manage large number of documents -->
			<sdx:repositories>
				<sdx:repository type="MYSQL" id="rep1" dsi="sdxload"/>
			</sdx:repositories>

			<sdx:fieldList xml:lang="fr-FR" variant="" analyzerConf="/sdx/resources/conf/analysis/fr.xml">
				<sdx:field name="contenu" type="word" default="true"/>
				<sdx:field name="title" type="field" brief="true"/>
				<sdx:field name="type" type="field" brief="true"/>
				<sdx:field name="date" type="date" brief="true"/>
				<sdx:field name="name" type="field" brief="true"/>
				<sdx:field name="wname" type="word"/>
				<sdx:field name="com" type="word"/>
				<sdx:field name="fcom" type="field" brief="true"/>
			</sdx:fieldList>
			<!-- We index with a simple XSLT stylesheet -->
			<sdx:index>
				<sdx:pipeline>
					<sdx:transformation id="index-1" type="com.ajlsm.sdx.loadtest.civilact.Indexer"/>
				</sdx:pipeline>
			</sdx:index>
		</sdx:documentBase>

On y remarque notamment le fait que l'indexation se fait à l'aide d'un filtre SAX programmé en Java, et non par une XSLT. Des tests préiminaires ont montré que cette option augmentait les performances mais pas autant qu'espéré.

Base 2 : moyens documents

La seconde base de documents vise à imiter une base de données d'images décrites plus ou moins en détails. Le modèle réel de cette base fictive est l'application SDX 1 Osiris (disponible sur l'intranet du ministère de la culture seulement). Pour nos mesures, nous avons indexé 440 000 documents, ce qui nous donne environ deux fois la taille actuelle de la base Mémoire au ministère de la culture et de la communication.

Ces documents font en moyenne 2,5Ko. La définition de la base de documents est celle-ci :

		<sdx:documentBase id="db2" type="lucene" keepOriginalDocuments="true">
			<sdx:queryParser class="fr.gouv.culture.sdx.search.lucene.queryparser.DefaultQueryParser"/>
			
			<sdx:repositories>
				<sdx:repository type="MYSQL" id="rep2" dsi="sdxload"/>
			</sdx:repositories>

			<sdx:fieldList xml:lang="fr-FR" variant="" analyzerConf="/sdx/resources/conf/analysis/fr.xml">
				<sdx:field name="contenu" type="word" default="true"/>
				<sdx:field name="title" type="field" brief="true"/>
				<sdx:field code="leg" type="unindexed" brief="true"/>
				<sdx:field code="titre" type="unindexed" brief="true"/>
				<sdx:field code="ntype" type="unindexed" brief="true"/>
				<sdx:field code="prod" type="field"/>
				<sdx:field code="typedoc" type="field"/>
				<sdx:field code="imm" type="date"/>
				<sdx:field code="depno" type="field" brief="true"/>
				<sdx:field code="departement" type="field" brief="true"/>
				<sdx:field code="noreg" type="field" brief="true"/>
				<sdx:field code="region" type="field" brief="true"/>
				<sdx:field code="insee" type="field"/>
				<sdx:field code="com" type="word"/>
				<sdx:field code="fcom" type="field" brief="true"/>
				<sdx:field code="format" type="field"/>
				<sdx:field code="type" type="field"/>
				<sdx:field code="aprod" type="date"/>
				<sdx:field code="auteur" type="word"/>
				<sdx:field code="fauteur" type="field" brief="true"/>
				<sdx:field code="diff" type="field"/>
				<sdx:field code="legende" type="word"/>
				<sdx:field code="edifice" type="word"/>
				<sdx:field code="edif" type="field"/>
				<sdx:field code="objet" type="word"/>
				<sdx:field code="objt" type="field"/>
				<sdx:field code="echelle" type="field"/>
				<sdx:field code="trl" type="field"/>
				<sdx:field code="support" type="field"/>
				<sdx:field code="autor" type="field"/>
				<sdx:field code="mcl" type="field"/>
				<sdx:field code="lib" type="field"/>
				<sdx:field code="tec" type="field"/>
				<sdx:field code="aire" type="field"/>
			</sdx:fieldList>
			<sdx:index>
				<sdx:pipeline>
					<sdx:transformation id="index-2" type="XSLT" src="index-db2.xsl"/>
				</sdx:pipeline>
			</sdx:index>
		</sdx:documentBase>

On remarque notamment une longue liste de champs, et donc des temps d'indexation en conséquence.

Base 3 : grands documents

Cette troisième base cherche à imiter une base d'articles scientifiques en format XML, articles pouvant avoir une vingtaine de pages. La structure de ces articles est constituée d'une en-tête avec quelques métadonnées (titre, auteur, date, etc.) ainsi qu'une suite de paragraphes textuels. La taille moyenne de ces documents est de 150Ko, ce qui est relativement élevé.

La structure de la base est pour sa part assez simple :

		<sdx:documentBase id="db3" type="lucene" keepOriginalDocuments="true">
			<sdx:queryParser class="fr.gouv.culture.sdx.search.lucene.queryparser.DefaultQueryParser"/>
			
	
			<sdx:repositories>
				<sdx:repository type="MYSQL" id="rep3" dsi="sdxload"/>
			</sdx:repositories>

	
			<sdx:fieldList xml:lang="fr-FR" variant="" analyzerConf="/sdx/resources/conf/analysis/fr.xml">
				<sdx:field name="contenu" type="word" default="true"/>
				<sdx:field name="title" type="field" brief="true"/>
				<sdx:field name="wtitle" type="word"/>
				<sdx:field name="wabstract" type="word"/>
				<sdx:field name="abstract" type="field" brief="true"/>
				<sdx:field name="author" type="field" brief="true"/>
				<sdx:field name="date" type="date"/>
				<sdx:field name="pubdate" type="field" brief="true"/>
				<sdx:field name="mcl" type="field"/>
			</sdx:fieldList>
			
	
			<sdx:index>
				<sdx:pipeline>
					<sdx:transformation id="index-3" type="XSLT" src="index-db3.xsl"/>
				</sdx:pipeline>
			</sdx:index>

		</sdx:documentBase>

Entrepôts utilisés

Dans les trois cas, les entrepôts sont des entrepôts MySQL, installé sur le même serveur de test. Une seule base de données est utilisée pour les trois entrepôts.



Auteur : Martin Sévigny ( AJLSM ) - 2003/02/01