ZEP-15 : Navigation à facettes à travers le site

Pour une navigation plus agréable et efficace

L'auteur de ce sujet a trouvé une solution à son problème.
Staff
Auteur du sujet
Cartouche
ZEP 15
Titre Navigation à facettes à travers le site
Révision 1
Date de création 2014-08-19
Dernière révision 2014-08-19
Type Feature
Statut Rédaction

Contexte

État de l'art

Aujourd'hui on a plein de manières de naviguer sur le site, qui nous permettent toutes de retrouver, ou non, ce qu'on cherche :

  • Les tutoriels sont rangés dans des catégories (2 niveaux) et ont des tags (inexploitables en l'état)
  • Les articles sont rangés en vrac et ont des tags (inexploitables en l'état)
  • Les forums sont rangées dans des catégories (2 niveaux) et ont des tags (exploitables, bien que pas top, en l'état)
  • Le moteur de recherche permet de rechercher dans les tutos, articles et forums. Il possède un système de filtre assez obscur (on ne sait pas trop ce qui correspond à quoi, l'ordre est bizarre, on ne sait pas si filtrer va nous fournir des résultats)
  • L'accueil fournit un accès direct à certains éléments (recherche de base, derniers tutos et article)
  • Les forums ont une page principale utilisable (catégories)
  • Les tutoriels et les articles sont rangés en vrac dans leur page principale

Problèmes rencontrés

Aujourd'hui, il est assez difficile de retrouver quelque chose en particulier. C'est d'autant plus vrai si, en tant que débutant, on ne sait pas exactement ce qu'on cherche.

Les tutos et articles en particuliers sont problématiques : le système de classification (tags) est très mal exploité pour l'instant. Un tuto qui n'est plus en page d'accueil est pour ainsi dire invisible.

La page d'accueil répond à des problématiques spécifiques et dépend de sa ZEP propre. Elle ne rentre pas en compte ici.

Proposition

La proposition en quelques mots

L'idée est de rationaliser toute notre navigation et de s'appuyer massivement sur une navigation à facettes pour parcourir l'intégralité du contenu du site.

Ceci nous permettrait de simplifier et rationaliser la navigation dans le site, et donc d'augmenter la pertinence de la recherche et la facilité d'extraction d'information, et subséquemment la satisfaction de nos visiteurs.

D'accord, mais qu'est-ce qu'une navigation à facettes ?

C'est un concept qui est d'abord utilisé dans le commerce électronique. Il s'agit de présenter une recherche (au sens large du terme : ce peut être une page catégorie) de produits, avec un ensemble de filtres (exemples : couleur, prix, taille, etc.)

Ces filtres, appelés "facettes", sont intelligents, et ce avec deux critères principaux :

  1. Les facettes présentées sont pertinentes par rapport au contexte. Si je peux présenter des voitures et des chaussures, je ne vais mettre la facette "pointure" que si j'affiche des chaussures.
  2. Les facettes garantissent au moins un résultat : si j'applique un filtre proposé, j'ai la certitude d'avoir au moins un résultat (sinon le filtre n'est pas présenté). On peut même préciser le nombre de résultats qui sera obtenu si on applique le filtre. En fait, le point 1 est une conséquence de celui-ci si les facettes sont bien définies.

Plus d'informations ici :

Que mets-on dans ces facettes ?

Les contenus facettés, dans l'idéal, seraient les suivants :

  • Tutoriels et articles1
  • Tribunes, si elles sont mises en places
  • Sujets de forums
  • Membres
  • Pages statiques

Les facettes seraient les suivantes :

  • Tags hiérarchisés, notion détaillée ci-dessous qui mélangent tags et catégories (multi-sélection possible)
  • Type de contenu (multi-sélection possible)
  • Auteur
  • Date de publication
  • Date de dernière mise à jour

Les tags sont communs à travers tout le site. Si je demandele tag "Python" sans préciser de type de type de contenu, j'aurai des tutos, des articles, des tribunes et des sujets de forum dans mes résultats !

La notion de tags hiérarchisés

(Je me demande si cette notion ne nécessiterait pas une ZEP à part entière…)

Aujourd'hui, les tags sont "à plat" : si j'ai un tag "Django", je ne sais pas que c'est du Python. Inversement, si je recherche tout ce qui concerne "Python" pour aider, je ne verrai pas ce qui est taggué "Django".

L'idée est d'avoir un système de hiérarchie des tags : tout tag peut avoir un et un seul tag parent. On peut donc remonter une hiérarchie pour chaque tag ; exemple : Programmation > Java > Java EE > Expression Language (EL)

Donc, avec un tel système, si je cherche "Java", j'ai non seulement "Java" mais aussi tous ses enfants.

Outil de gestion

Il faudrait un outil de gestion des tags, qui permettrait de :

  • Définir / modifier le tag parent (hiérarchie)
  • Modifier le libellé d'affichage
  • Fusionner 2 tags qui seraient identiques
Suggestions pour l'utilisateur

Parce que l'utilisateur ne peut pas inventer les tags lui-même, il faudrait lui suggérer ceux qui existent, tout en lui laissant la possibilité d'en créer un nouveau si besoin.

Comment on fait ça ?

Un moteur de recherche à facettes

Là, pas besoin d'aller là : notre moteur actuel, Solr, est déjà un moteur de recherches à facettes. Il "suffit" donc de lui paramétrer les bonnes facettes, d'indexer le contenu en fonction, et hop ! On a les réponses complètes qui nous permettent de créer les vues ! (y compris l'information du nombre de résultat obtenus en appliquant tel ou tel filtre).

Intégration avec Django

Aujourd'hui on interroge pas Solr directement, on passe par un truc qui s'appelle Haystack. Or, Haystack fait pas mal de magie en automatisant beaucoup de choses, y compris la génération du fichier de configuration de Solr

Ici un POC est nécessaire pour savoir dans quelle mesure on va pouvoir utiliser Haystack, et dans quelle mesure il va falloir faire des trucs en plus.

La vue en facettes

C'est une vue qui ressemble un peu aux résultats de recherche actuels :

  • En haut, le terme recherché (s'il existe) + un gros champ de recherche texte
  • Menu de gauche : en haut les facettes sélectionnées, en-dessous les facettes disponibles
  • Zone de contenu principal : les résultats en fonction du terme recherché et des facettes sélectionnées

Impacts sur la navigation

Page d'accueil

Rien, voir la ZEP correspondante

Accueil des tutos / articles / tribunes

Ces pages sont remplacées par une vue, avec la facette "type" pré-sélectionnée sur le bon type.

Accueil des forums

Pour garantir le principe de moindre surprise, la vue actuelle en catégories / sous-catégories est conservée.

Page des tags

C'est une vue de facettes avec le tag sélectionné mais pas le type de contenu.

Page de recherche

C'est une bête vue en facettes

Contenu indexé et facetté, en détail

  • Tutoriels, articles, tribunes publiés
    • Tags hiérarchiques (facette)
    • Titre
    • Sous-titre
    • Date de publication (facette)
    • Date de dernière mise à jour (facette)
    • Auteurs (facette)
    • Contenu intégral (toutes les intros, toutes les conclusions, toutes les parties)
  • Sujets de forums
    • Tags hiérarchiques (facette)
    • Titre
    • Sous-titre
    • Date de publication (facette)
    • Date du dernier post (facette)
    • Auteur (facette)
    • Groupe d'appartenance (public ou non)
    • Contenu du premier message
  • Messages de forums
    • Sujet
    • Auteur (facette)
    • Date de publication (facette)
    • Groupe d'appartenance (public ou non)
    • Contenu du message

Ceux-ci sont plus délicat, mais seraient utiles à trouver dans la recherche

  • Membres
    • Nom
    • Biographie
  • Pages statiques
    • Titre
    • Contenu

Je pense qu'il reste des questions, mais j'aimerais déjà votre premier retour sur l'idée.


  1. Quelle que soit la distinction finalement opérée entre ces termes. 

Staff

Oo j'attendais cette ZEP. Cependant,

Les tutoriels sont rangés dans des catégories (2 niveaux) et ont des tags (inexploitables en l'état)

SpaceFox

Cette phrase n'est pas tout à fait juste. Je dirais plutôt "les tutoriels sont rangés dans une ou plusieurs sous-catégories, qui elles appartiennent à une catégorie mère". Ce que tu appelles tag ici, n'est qu'une sous catégorie et donc dire qu'il y'a des 2 niveaux de catégorie et de tags, ce n'est pas juste.

Les articles sont rangés en vrac et ont des tags (inexploitables en l'état)

SpaceFox

A corriger par "Les articles sont rangés dans des sous-catégories". De plus l'expérience en montré que tout le monde n'a pas la même définition de ce qu'il entend par tag, et donc je n'aime pas qu'on utilise ce mot pour décrire expliquer quelque chose, sauf si c'est expliqué avant.

Le moteur de recherche permet de rechercher dans les tutos, articles et forums. Il possède un système de filtre assez obscur (on ne sait pas trop ce qui correspond à quoi, l'ordre est bizarre, on ne sait pas si filtrer va nous fournir des résultats)

SpaceFox

Le système de filtre n'est pas "obscur". On peut dire qu'il n'est pas documenté, qu'il est bugué, mais on ne peut pas dire qu'il est obscur.

Maintenant que les précisions sont faites, passons à la ZEP en elle même.


La notion de tags hiérarchisés

[…]

L'idée est d'avoir un système de hiérarchie des tags : tout tag peut avoir un et un seul tag parent. On peut donc remonter une hiérarchie pour chaque tag ; exemple

SpaceFox

La solution des tags parent enfant n'est pas la bonne pratique. En général on met en place un algorithem de CAH pour mettre en relation divers tags, et pouvoir faire des propositions de tags voisins.

Ici un POC est nécessaire pour savoir dans quelle mesure on va pouvoir utiliser Haystack, et dans quelle mesure il va falloir faire des trucs en plus.

SpaceFox

HayStack, ne fais pas de magie hein, il se contente de faire les bons appels à l'API de Solr, et bonne nouvelle, il fait aussi de la facette et par magie de manière simple :)

Page d'accueil

Rien, voir la ZEP correspondante

SpaceFox

Je trouve justement que sur la page d’accueil on devrait avoir à la place des catégories de tutos, une vision par facette. Il faudrait je pense discuter de tout ça en commun avec la ZEP de refonte de la home.

On devrait pouvoir, dans la barre de gauche d'un forum avoir un lien vers 2-3 tutos en lien avec le forum en cours.

Staff
Auteur du sujet

Précision : cette ZEP est rédigée du point de vue utilisateur (sauf pour la partie purement technique).

Donc :

  • Je suis d'accord pour le classement des tutos, même si c'est pas très clair pour l'utilisateur.
  • Je ne suis pas d'accord pour le classement des articles. Pour l'instant, les "sous-catégories" que tu mentionnes sont invisibles, donc n'existent pas. La seule chose qu'on voit, c'est quelque chose qui ressemble à des tags (il peut y en avoir plusieurs, ça a la même syntaxe).
  • Le système de filtre de la recherche est difficilement compréhensible tant que tu ne sais pas ce qu'il fait techniquement, il est donc obscur pour l'utilisateur.

Concernant la notion de tags hiérarchisés : ton lien me présente une belle théorie, ça m'a l'air super. Par contre, je n'ai pas la moindre idée de comment je fais ça concrètement, de manière à répondre à la problématique posée. La réponse doit être complète d'un point de vue utilisateur (je cherche Python, je trouve aussi Django) et d'un point de vue administration (comment définis-je les liens entre mes tags).

Je m'en doutais pour Haystack, mais ça n'empêche pas le POC. C'est un outil qui rajoute une couche entre Django et Solr ; et comme tout outil qui ajoute une couche, il est susceptible de provoquer des limitations. Ce sont ces limitations qu'on doit tester. Il fait les facettes, OK. Est-ce qu'il fait les facettes hiérarchiques ? Les multi-sélections ? Avec un "ou" ou un "et" quand on multi-sélectionne ? C'est réglable ? Etc.

Pour la page d'accueil, je mets "rien" parce que ça doit aller dans la ZEP correspondante. C'est "Rien de défini ici" en fait.


Sinon, j'ai oublié un truc : il y a des problématiques SEO à prendre en compte, si on veut éviter de se prendre plein de duplicate content en interne (ça consiste principalement à mettre des "nofollow" sur tous les liens filtres des facettes).

Staff

Précision : cette ZEP est rédigée du point de vue utilisateur (sauf pour la partie purement technique).

SpaceFox

Ah j'ai été dupé par le contenu technique dans la ZEP. Dans ce cas vue de l'utilisateur, tu as bien raison. La tambouille interne est vue différemment par l'utilisateur (et c'est normal).

Concernant la notion de tags hiérarchisés : ton lien me présente une belle théorie, ça m'a l'air super. Par contre, je n'ai pas la moindre idée de comment je fais ça concrètement, de manière à répondre à la problématique posée.

SpaceFox

Globalement la théorie de clustering par classification devrait suffire dans une ZEP. Les détails techniques de "comment on fait" c'est de l'ordre de la technique, le développeur fera les choix qu'il faut pour l'implémenter. Mais entre autre, python propose la lib scipy pour ça, on arrive à faire des trucs dans ce style avec :

CAH d'une population

Il fait les facettes, OK. Est-ce qu'il fait les facettes hiérarchiques ? Les multi-sélections ? Avec un "ou" ou un "et" quand on multi-sélectionne ? C'est réglable ?

SpaceFox

Ici aussi, je dirais que ce n'est pas le rôle de la ZEP de choisir l'outil en question. La ZEP se contente de dire tout ce qu'il faut, et ensuite la technique fait les choix techniques adéquats. Je me suis permis de mentionner ici HayStack parce que justement il couvre le besoin présenté dans la ZEP actuellement.

Staff
Auteur du sujet

Globalement la théorie de clustering par classification devrait suffire dans une ZEP. Les détails techniques de "comment on fait" c'est de l'ordre de la technique, le développeur fera les choix qu'il faut pour l'implémenter.

Je serais d'accord si c'était un pur problème technique ; par contre là d'un point de vue fonctionnel je n'arrive pas à me représenter comment on peut gérer ça, concrètement, avec ton outil. Comment est-ce qu'on définit les relations entre les différents tags, pour commencer.

OK pour le reste.

Staff
Auteur du sujet

Salut tout le monde !

Je pense qu'avec la ZEP-12 et la ZEP-4 qui vont bientôt arriver, le moment semble bon pour commencer à relancer cette ZEP-ci, qui a pour buts de rendre notre contenu plus accessible et la navigation plus agréable.

Pour vous donner un exemple de l'importance de ce manque d'ergonomie, sur les 30 derniers jours, 6000 visiteurs sont arrivés sur notre page des tutos (c'est la 2ème plus importante interaction sur le site !). 90% d'entre eux ont quitté le site aussitôt après, et franchement je ne peux pas leur en vouloir. C'est un peu comme si quelqu'un essayait d'utiliser notre menu des tutos…

Qu'en dites-vous ?

Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte