sdx-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE : [sdx-users] thesaurus : petit cours possible ?


From: Martin Sevigny
Subject: RE : [sdx-users] thesaurus : petit cours possible ?
Date: Wed, 30 Apr 2003 17:03:58 +0200

Bonjour,

> - Format du fichier dico.xml

Dans les sources de SDX :
src/documentation/src/xml/schemas/sdx-thesaurus.xsd.

> - influence sur l'indexation :
>    l'indexation se fait elle par rapport au thésaurus 
> ?(elimine tout les 
> mots ne faisant pas partie de celui-ci)

Aucune influence si on ne fait rien de spécial. Par contre, on peut,
pour chaque champ, demander à SDX d'injecter des termes supplémentaires
en faisant deux choses :

- dans le pipeline d'indexation, ajouter une transformation ainsi :

<sdx:transformation
type="fr.gouv.culture.sdx.pipeline.FieldExpansionTransformation"/>

- dans l'étape qui précède (votre XSLT d'indexation par exemple),
assurez de sortir quelque chose comme ceci :

    <sdx:field code="fieldName" name="fieldName">
        <sdx:expandField>
            <sdx:relation type="et" depth="0" lang="fr" th="id"/>
            <sdx:relation type="bt" depth="1" lang="fr"/>
            <sdx:relation type="nt" depth="2" lang="fr"/>
            <sdx:relation type="uf" depth="3" lang="fr"/>
        </sdx:expandField>
    </sdx:field>

Voir plus bas pour les types de relation.

> - influence sur la recherche :

Rien si on ne fait rien de spécial. Voici un exemple de code XSP qui
fonctionne (en principe) :

    <sdx:executeSimpleQuery hpp="5" hppSession="hpp">
        <sdx:parameter name="base" value="xml"/>
        <sdx:parameter name="base" value="html"/>
        <sdx:expandQuery th="test" depth="2">
            <sdx:parameter name="relation" value="bt"/>
            <sdx:parameter name="relation" value="nt"/>
        </sdx:expandQuery>
    </sdx:executeSimpleQuery>

Cet appel va prendre la requête et lui ajouter des termes en utilisant
les relations "terme générique" et "terme spécifique" du thésaurus
"test" (déclaré dans application.xconf), et sur sur une "profondeur" de
2 termes.

Les relations possibles sont les suivantes :

    public static final String TERM = Node.Name.TERM;
    public static final String RELATION_SCOPE_NOTE = "sn";
    public static final String RELATION_NARROWER_TERM = "nt";
    public static final String RELATION_BROADER_TERM = "bt";
    public static final String RELATION_BROADER_TERMS = "bts";
    public static final String RELATION_USED_FOR = "uf";
    public static final String RELATION_EQUIVALENT_TERM = "et";
    public static final String RELATION_RELATED_TERM = "rt";
    public static final String RELATION_USE = "use";
    public static final String RELATION_PARTIAL_EQIUVALENCE = "pe";

On peut aussi spécifier un paramètre "lang" pour indiquer de suivre des
relations de langues, lorsqu'on a un thésaurus multilingue. Ce paramètre
s'ajoute à la relation "et" ou "pe".

L'extension de la requête se fait par une "recherche" dans le thésaurus,
en utilisant l'analyseur de mots si c'est dans un champ de type word.
Cette recherche retourne des concepts, et les relations spécifiées sont
ajoutées à partir de ces concepts retournés.

Par exemple si on cherche "maison", et que dans le thésaurus on a
"maison de campagne" et "maison de ville", alors ces deux concepts
seront retournés, et si on a demandé les génériques les génériques de
ces deux concepts seront injectés dans la requête.

Tout cela me fait constater qu'il manque un truc : restreindre
l'extension à un ou des champs précis.

> - "best Practice" d'utilisation/programmation (souvent 
> ignorer dans les 
> tutoriels mais pourtant important)

Plus difficile...

Voilà, c'est embryonnaire, mais ça donne un peu plus de pistes...

Martin Sévigny





reply via email to

[Prev in Thread] Current Thread [Next in Thread]