Skip to content

Types d'indexation

Daniel Ménard edited this page Mar 3, 2015 · 6 revisions

Ce document détaille les différents indexeurs utilisés par docalist.

Remarque : document à réviser une fois que le ticket #241 sera fermé.

Sommaire

Introduction

Les sections qui suivent décrivent les indexeurs utilisés par docalist. C'est utile pour comprendre comment un champ est indexé, et parfois pour comprendre comment une requête sera interprétée par le moteur.

text

Rôle : indexation des mots présents dans un texte, pas de stemming (exemple : author)

Traitements effectués :

  • html_strip : suppression des tags html/xml
  • lowercase : conversion en minuscules
  • asciifolding : suppression des accents
  • elision : suppression des élisions l,m,t,qu,n,s,j,d

default-fr

Rôle : indexation des mots présents dans un texte avec stemming en français (exemple : titre, résumé, nom d'organisme...)

Traitements effectués :

  • html_strip : suppression des tags html/xml
  • lowercase : conversion en minuscules
  • asciifolding : suppression des accents
  • elision : suppression des élisions l,m,t,qu,n,s,j,d
  • light-stem-french : stemming "light" en français.

Remarque la seule différence par rapport à text, c'est le stemming qui est fait en plus.

filter

Rôle : permet de retrouver la valeur exacte d'un champ (exemples : filtres type, genre, support, auteur, mots-clés...)

Traitements effectués :

  • not_analyzed : aucun traitement n'est effectué, chacun des items présents dans le champ (chaque auteur, chaque mot-clé...) est stocké tel quel dans l'index.

  • à l'interrogation, il faut rechercher la valeur exacte en respectant les majuscules/minuscules, les accents, les espaces et signes de ponctuation, etc.

    En général, ce type d'index n'est pas utilisé directement par les humains, mais permet de construire des requêtes qui recherche vraiment la valeur exacte qui figure dans un champ (zéro flou). C'est ce qui est utilisé, par exemple, pour gérer les facettes ou les filtres dans les formulaires de recherche avancée.

date

Rôle : indexation d'un champ contenant une date (exemples : date de publication, de diffusion, de réédition, etc.)

Traitements effectués :

  • Le champ doit contenir une date dans l'un des formats suivants : yyyy-MM-dd, yyyy-MM, yyyyMMdd, yyyyMM, yyyy.
  • Les dates invalides sont ignorées (pas d'erreur, mais le champ n'est pas indexé).
  • En interne, la date indiquée est convertie en entier représentant le nombre de secondes écoulées depuis epoch. Cela permet de faire des recherches par plages de dates : date:>valeur, date:<valeur, date:[début TO fin].

date-heure

Rôle : indexation d'un champ contenant une date-heure précise (exemples : creation, lastupdate)

Traitements effectués :

  • Le champ doit contenir une date au format : yyyy-MM-dd HH:mm:ss.
  • Les dates invalides sont ignorées (pas d'erreur, mais le champ n'est pas indexé).
  • En interne, la date indiquée est convertie en entier représentant le nombre de secondes écoulées depuis epoch. Cela permet de faire des recherches par plages de dates : date:>valeur, date:<valeur, date:[début TO fin].

entier

Rôle : indexation d'un champ contenant un nombre entier (exemple : ref, relation)

Traitements effectués :

  • Le champ doit contenir un entier correct (une erreur serait générée sinon).
  • Ce type d'indexation permet de faire des recherches par plages de valeurs : ref:>valeur, ref:<valeur, ref:[début TO fin].

suggest

Rôle : type d'indexation spécial (autocomplétion) permettant d'avoir des index d'aide à la saisie (lookups).

Traitements effectués :

  • Traitement interne au moteur de recherche.
  • Ce type d'index n'est pas utilisable dans une requête, il est destiné uniquement aux lookups.
  • Pour chaque entrée, seuls les 50 premiers caractères sont pris en compte (les caractères suivants ne sont plus discriminants).

multichamp

Rôle : type d'indexation utilisé pour les "multichamps" qui regroupent sous un même nom plusieurs sous-champs différents (number, date, content, topic, etc.)

Traitements effectués :

  • Recopie dans le multichamp des valeurs trouvées dans les sous-champs.
  • Les sous-champs disponibles pour un multichamp donné correspondent à la colonne "code" de la table associée au multichamp.
  • Chaque sous-champ est interrogeable séparément (number.isbn, date.publication...) et le multichamps permet d'interroger tous les sous-champs d'un seul coup.

raw

Rôle : type d'indexation utilisé pour des codes, des numéros, des champs de type chaine de caractères contenant autre chose que du texte.

Traitements effectués :

  • Aucun traitement n'est effectué sur le champ (pas de stemming, etc.) : le contenu du champ est stocké tel quel dans l'index.

non indexé

Rôle : champ non indexé, non utilisable dans une requête

Traitements effectués :

  • aucun : le champ ne figure pas dans l'index.