-
Notifications
You must be signed in to change notification settings - Fork 0
Types d'indexation
Ce document détaille les différents indexeurs utilisés par docalist.
Remarque : document à réviser une fois que le ticket #241 sera fermé.
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.
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
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.
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.
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]
.
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]
.
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]
.
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).
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.
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.
Rôle : champ non indexé, non utilisable dans une requête
Traitements effectués :
- aucun : le champ ne figure pas dans l'index.
Documentation docalist
Historique du wiki - Remarque, suggestion ? Utilisez le gestionnaire de tickets.