Modifier le fichier

Taglink

Ajout de l'extension au projet

<dependency>
    <groupId>fr.kosmos.web.extensions</groupId>
    <artifactId>taglink</artifactId>
    <version>${taglink.version}</version>
</dependency>

Activation du plugin de fiches

Par défaut, l'extension Taglink n'est activée sur aucune fiche (liste vide). Pour l'activer sur des fiches, il faut définir un bean AttributeToOverrideBean et ajouter les classes de fiches.

<bean id="taglinkPluginFiche" class="com.kportal.core.context.AttributeToOverrideBean">
    <property name="idExtensionToMerge" value="taglink"/>
    <property name="attributes">
        <map>
            <entry key="classes">
                <list>
                    <value>com.univ.objetspartages.om.Actualite</value>
                    <value>com.ksup.objetspartages.om.Annuaireksup</value>
                </list>
            </entry>
        </map>
    </property>
</bean>

Il est possible d'activer le plugin sur l'ensemble des fiches (convention "null") sur les classes concernées : 

<bean id="taglinkPluginFiche" class="com.kportal.core.context.AttributeToOverrideBean">
    <property name="idExtensionToMerge" value="taglink"/>
    <property name="attributes">
        <map>
            <entry key="classes">
                <null/>
            </entry>
        </map>
    </property>
</bean>

Paramétrage des types de libellés correspondant aux tags

Il est également possible d'ajouter de nouveaux types de tag. Il faut pour cela ajouter le nouveau libellé dans un fichier typ_libelle.dat spécifique au projet. Il faut ensuite configurer le tags. Deux possibilités pour cela :

  • S'il n'y a pas de différenciation de fiches autorisées par type de tag.
    • Créer un fichier application_taglink.properties dans src/main/resources du projet
    • Et ajouter les types autorisés (exemple : type de base 9876 (Tag), fournis avec l'extension, et l'ajout d'un nouveau type de libellé, et nouveau tag 9900).
      tags.types=9876,9900
    
  • S'il y a un différenciation des fiches autorisées par type de tag, utiliser la fonctionnalité d'AttributeToOverrideBean (exemple : type de base 9876 (Tag), fournis avec l'extension, sans classe, et l'ajout d'un nouveau type de libellé, 9900, avec la classe CoursBean).
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:util="http://www.springframework.org/schema/util"
 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">

    <bean id="pluginTagLinkConf" class="com.kportal.core.context.AttributeToOverrideBean">
        <property name="idExtensionToMerge" value="taglink"/>
        <property name="idBeanToMerge" value="pluginTagLinkConfiguration"/>
        <property name="attributes">
            <map>
                <entry key="typesLibelles" value-ref="typesLibelleList" />
            </map>
        </property>
    </bean>

    <util:list id="typesLibelleList" value-type="com.kosmos.taglink.bean.TagLinkTypeBean">
        <bean id="transversal" class="com.kosmos.taglink.bean.TagLinkTypeBean">
            <constructor-arg name="type" value="9876"/>
        </bean>

        <bean id="diplomaLevel" class="com.kosmos.taglink.bean.TagLinkTypeBean">
            <constructor-arg name="type" value="9900"/>
            <constructor-arg name="classes">
                <list>
                    <value>com.ksup.objetspartages.bean.CoursBean</value>
                </list>
            </constructor-arg>
          </bean>
    </util:list>
</beans>

Activation de la fonctionnalité d'insertion d'une liste à partir de tags

Pour activer le tag de toolbox, il faut effectuer la modification suivante dans l'extension contexte du projet.

<!-- Activation du tag de toolbox permettant de faire une liste de fiches à partir de tags taglink -->
<bean id="projetTagListToolboxTag" class="com.kportal.core.context.AttributeToOverrideBean">
    <property name="idExtensionToMerge">
        <util:constant static-field="com.kosmos.taglink.util.TagLinkUtils.ID_EXTENSION"/>
    </property>
    <property name="idBeanToMerge" value="tagListToolboxTag"/>
    <property name="attributes">
        <map>
            <entry key="category" value="list"/>
        </map>
    </property>
</bean>

Intégration des tags transversaux dans la recherche

Activer la recherche par tags sur la recherche transverse

Afin de pouvoir filtrer les résultats de recherche par tags sur la recherche transverse, il faut ajouter l'aggrégation searchTaglinkAggregation au bean de configuration de recherche :

<bean id="searchFicheConfigurationTags" class="com.kportal.core.context.SetToAddBean">
    <property name="idExtensionToMerge" value="core"/>
    <property name="idBeanToMerge" value="searchFicheConfiguration"/>
    <property name="setToMerge" value="postFilters"/>
    <property name="add">
        <set>
            <ref bean="searchTaglinkAggregation"/>
        </set>
    </property>
</bean>

Ajout d'un lien vers la recherche dans l'entête de la fiche

cf intégration projet

Patch lien tag - resultat de recherche

cf intégration projet

Priorisation des résultats de recherche

Il est possible de prioriser les résultats de recherche à partir de termes prédéfinis. Au niveau de la recherche, lorsqu'on recherchera sur le terme "Premier tag", par exemple, les fiches affectées à ce libellé remonteront en priorité.

En back-office, il existe deux manières de procéder :

  • Via Outils > Tags > Création d'un nouveau tag de type 'Priorisation des résultats de recherche' et affectation des fiches liées ;
  • Via Contenus > {mon-type-de-fiche} > Onglet 'Plugins' > Tags.

Configuration

On commence par déclarer le type Priorisation de recherche (9875) puis on ajoute une pondération sur ce type de libellé, dans un fichier application_taglink.properties :

# Définition des types de tags
tags.types=9876,9875
# Pondération sur Priorisation des résultats de recherche
search.boost.plugins.taglinkPluginFiche.items.9875.label_value=10000

Ensuite, dans le fichier {mon-projet}-taglink.xml, on vient déclarer le boost, qui sera ajouté au bean exactPhraseQuery :

<!-- Boost pour la priorisation des résultats de recherche -->
<bean id="tagLinkPriorisationValueFieldConfiguration" class="com.kosmos.search.query.configuration.SearchFieldConfiguration">
    <property name="fieldName" value="plugins.taglinkPluginFiche.items.9875.label_value"/>
    <property name="boost" value="${search.boost.plugins.taglinkPluginFiche.items.9875.label_value:10000}"/>
</bean>
 
<bean id="tagLinkQueryListToAdd" class="com.kportal.core.context.ListToAddBean">
    <property name="idExtensionToMerge">
        <util:constant static-field="com.jsbsoft.jtf.core.ApplicationContextManager.DEFAULT_CORE_CONTEXT"/>
    </property>
    <property name="idBeanToMerge" value="exactPhraseQuery"/>
    <property name="listToMerge" value="extraFields"/>
    <property name="add">
        <list>
            <ref bean="tagLinkPriorisationValueFieldConfiguration"/>
        </list>
    </property>
</bean>