Autres versions

Vous êtes ici : Guides thématiquesMoteur de recherche

Fonctionnement général du moteur

Présentation des mécanismes de recherche

Cet article présente le fonctionnement du moteur de recherche Elasticsearch tel qu'il a été implémenté sur K-Sup : calcul de la pertinence, présentation des résultats, auto-complétion.

Indexation des contenus

Les contenus saisis dans l'application sont indexés dans le serveur Elasticsearch de différentes manières :

  • au fil de l'eau lors de l'enregistrement de la données (fiche, rubrique, libellé...).
  • lors de l'exécution du script Indexation complète des contenus. Au démarrage du traitement l'ensemble des données présentes dans le serveur Elasticsearch sont supprimées.
Par défaut, toutes les fiches déclarées dans l'application sont indexées dans le serveur Elasticsearch. Il est cependant possible de modifier ce comportement (voir Personnalisation du moteur de recherche).
 

Construction de la requête et calcul de la pertinence

Afin de fournir un moteur de recherche le plus pertinent possible, la recherche dans les contenus de l'application est réalisée en plusieurs requêtes. Chaque requête participe à la pertinence globale avec un poids différents, afin de privilégier en priorité les résultats les plus pertinents :
  1. Recherche des termes exacts en mode "phrase", c'est-à-dire avec prise en compte de l’espacement entre les mots. Attention tous les mots recherchés doivent être présents dans le champ.
  2. Recherche sur les termes exacts uniquement. Les mots recherchés peuvent être répartis sur plusieurs champs.
  3. En mode "phrase", recherche par analyse des mots : découpage des mots, analyse linguistique (certains mots de liaison sont ignorés, la terminaison de certains mots est ignorée, recherche de synonymes, etc...), conversion de données (dates, nombres...). L'ensemble des mots recherchés doit être présent dans le même champ.
  4. Recherche par analyse des mots uniquement.
  5. Recherche sur des parties de mots (recherche sur "licence pro" pour faire remonter licence professionnelle).
Dans la liste ci-dessus, le poids des différentes requêtes sont décroissants. Un document remontant grâce à la requête 1 a beaucoup plus de poids qu'un document trouvé avec la requête 5.

Le calcul de la pertinence d'un résultat lors de la recherche d'un terme est réalisé de la manière suivante par le serveur Elasticsearch :
  • Fréquence du terme. Plus le terme t est présent dans un document plus il est pertinent.
  • La fréquence du terme dans tous les documents. Si le terme est présent un grand nombre de fois dans l'ensemble des documents, alors le terme n'est pas considéré comme pertinent (exemple pour les articles : mais, où ...).
  • Rapport entre la taille du terme et la taille du champ. La chaîne trouvée dans un champ court (title) a plus de poids que dans un champ long (description).
  • Le "boost" configuré sur le champs ou sur le type de document (voir notre article détaillé pour plus d'informations).
C'est ce score qui permet ensuite d'ordonner les résultats et de les présenter par pertinence à l'utilisateur.
 

Tri des résultats

Lorsqu'aucun mot-clé n'est renseigné, les résultats sont présentés par date de modification décroissante.
Dès qu'un mot-clé est renseigné (cas le plus fréquent), le tri par pertinence est utilisé.
 

Affichage des résultats

L'affichage par défaut des résultats comporte :
  • Le titre de la fiche, avec un lien sur le titre pour accéder au contenu
  • Le type de contenu et la date de dernière modification
Par défaut, les mots recherchés sont mis en surbrillance dans le résultat de recherche. Il est cependant possible de modifier ce comportement (voir Personnalisation du moteur de recherche).
 

Auto-complétion

Le moteur de recherche intègre par défaut un affichage de suggestions de résultats au moment de la saisie du mot-clé dans le champ de recherche. Les suggestions proposées correspondent au libellé des contenus trouvés.
La requête utilisée pour remonter ces suggestions de résultats utilise uniquement une recherche de type phrase avec les termes analysés. De plus, seuls les champs constituant le libellé sont pris en compte.
 

Mis à jour le 14 juin 2019