• Aucun résultat trouvé

5. Intégration au système de recherche de Sésamath

5.4 Mise en œuvre du besoin fonctionnel

Le peuplement aléatoire de l’index des ressources a permis de valider que le scénario initial de recherche de ressources par une notion ou capacité correspondait aux attentes de Sésamath. Différents scénarios ont ensuite été écrits afin de faire évoluer le moteur de recherche en affinant les résultats par l’intermédiaire de filtres.

Le choix des filtres a été statué sur le niveau scolaire et le type caractérisant la ressource. Les scénarios ont ensuite été réalisés par itérations successives. Quatre scénarios ont été implémentés.

5.4.1 Scénario 1 : Recherche avec filtres d'abord

Dans ce premier scénario, l’utilisateur coche les filtres avant de lancer la recherche d’une capacité ou notion. La figure 92 montre l’ajout des arbres de filtres dans l’interface de Bibli.

Le processus de recherche peut être analysé suivant les règles :

− si aucun filtre n’est coché, la recherche s’effectue sur les ressources indexées par la notion ou capacité sélectionnée « ET » ne possédant pas de niveau « ET » ne possédant pas de type ; − si le filtre 4e, par exemple, est coché, la recherche s’effectue sur les ressources indexées par la

notion ou capacité sélectionnée « ET » possédant le niveau 4e « ET » ne possédant pas de type ;

− si les filtres 4e et 5e sont cochés, la recherche s’effectue sur les ressources indexées par la notion ou capacité sélectionnée « ET » possédant le niveau 4e « OU » 5e « ET » ne possédant pas de type.

Le principe des ET et des OU des filtres pour le niveau scolaire s’applique à l’identique pour les filtres par types de ressources. La recherche Solr sur les documents ne possédant pas de champs niveau ou de types de ressources a pour syntaxe : « -<nom du champ>:[* TO *] ».

Ce scénario a ensuite évolué pour permettre une recherche de l’ensemble des ressources sans filtrer par une capacité ou notion. Si l’utilisateur coche un filtre du niveau scolaire ou des types de ressources, la recherche sera dynamiquement lancée avec le caractère « * » sur les champs capnotion et ancestor correspondant aux capacités et notion dans l’index sesaindex.

L’arbre des filtres a été implémente avec l’API JavaScript Jstree [JSTREE 2013]. Tout changement sur l’arbre est analysé par du JavaScript qui met à jour les champs du formulaire caché, de la vue layout.html.twig, et le soumet automatiquement au contrôleur Solr. La fonction filtreResultsAction a dû être adaptée pour gérer ces filtres.

5.4.2 Scénario 2 : Filtre avec critères après une première recherche

Ce scénario découle du précédent. Si après une première recherche l’utilisateur coche ou décoche un filtre, la nouvelle recherche est automatiquement relancée avec le filtre en plus ou en moins. La figure 93 montre que l’utilisateur a initialement recherché des ressources avec la notion angle et ne possédant pas de niveau et de type.

Le système affiche une liste de ressource indexée directement avec la notion angle (les 2 premières) ou indirectement par les ancêtres (angle étant un ancêtre de la notion angle inscrit). Si l’utilisateur coche le filtre 6e, le résultat illustré par la figure 94 devient tout autre.

Les événements sur l’arbre des filtres sont gérées par du JavaScript qui met à jour les champs du formulaire caché, de la vue layout.html.twig, et le soumet automatiquement au contrôleur Solr.

5.4.3 Scénario 3 : Recherche de ressource avec filtres par clic sur une valeur

d'un champ d'une des ressources retournées

Ce troisième scénario ne s’applique que si une première recherche par les notions et capacités avec ou sans filtres a déjà été réalisée. L’objectif est de pouvoir appliquer les filtres capacités ou notions, niveau et type de ressources à partir de la vue affichant les résultats. La figure 95 illustre une recherche sur la notion angle avec l’ensemble des niveaux scolaires et avec tous les types de ressources.

Si l’utilisateur clique sur l’un des liens, dans les colonnes 1, 2 ou 3, une nouvelle recherche est automatiquement lancée en prenant en compte le filtre sélectionné. La figure 96 montre que l’utilisateur a sélectionné le lien de la notion « propriétés des figures planes ».

Figure 95 - Recherche tout filtres depuis la vue des résultats

La notion angle a été remplacée par la notion « propriétés des figures planes », mais les autres filtres restent inchangés. Si l’utilisateur sélectionne ensuite 4e la recherche se réduit aux ressources indexées par la notion « propriétés des figures planes » et étant d’un niveau 4e et possédant un type. Le comportement est le même si l’utilisateur choisit un lien de la colonne des types.

Les événements sur les liens sont gérés par JavaScript qui met à jour les champs du formulaire caché, de la vue layout.html.twig, et le soumet automatiquement au contrôleur Solr.

5.4.4 Scénario 4 : Recherche par combinaison de plusieurs notions et

capacités

Jusqu’à présent la recherche n’est réalisée qu’avec une seule capacité ou notion. Ce scénario a pour objectif d’affiner la recherche de ressources en combinant plusieurs notions et capacités. La figure 97 illustre une recherche sur une capacité et une notion à la fois.

La combinaison est un « ET » sur les capacités et notions. Le système renvoie donc toutes les ressources indexées avec la notion angle aigu et la capacité utiliser la définition du cosinus. Les filtres sur les niveaux et les types restent inchangés. L’utilisateur peut combiner les notions et capacités à partir de la zone de saisie ou depuis les liens de la vue des résultats. Le fonctionnement du scénario 3, qui remplaçait la notion ou capacité, a donc été changé pour ce faire.

Le contrôleur Solr a été modifié pour effectuer une requête HTTP avec la syntaxe illustrée par la figure 98.

(capnotion:<capacité/notion 1> OR ancestor:<capacité/notion 1>) AND (capnotion:<capacité/notion 2> OR ancestor:<capacité/notion 2>)

Figure 98 - Syntaxe de la nouvelle requête Figure 97 - Filtres sur plusieurs capacités et notions