La page de la Recherche Experte est atteinte à partir d’un lien présent sur la page Recherche Avancée. La requête doit être écrite dans la zone de saisie appelée Constructeur de requête. Cliquer sur le bouton Rechercher permet de visualiser les résultats. Le bouton Tester la requête permet uniquement d’afficher, dans l’historique situé sous le constructeur de requête, le nombre d’items trouvés.
Chaque recherche est enregistrée, un historique de vos différentes requêtes est conservé pendant la durée de votre session.
Vous pouvez combiner vos recherches en cliquant sur l’identifiant de chaque requête sélectionnée (#n).
A partir de la seconde requête ajoutée dans la zone de Recherche combinatoire sur l’historique, vous devez préciser l’opérateur booléen entre les requêtes (OR, AND ou NOT). Cliquer sur le bouton Combiner permet de visualiser les résultats.
Comment écrire les requêtes dans le constructeur ?
L’application utilise le moteur de recherche Elasticsearch 5 qui offre de nombreuses possibilités : combinaison d’intitulés de champs avec les opérateurs booléens ou de proximité, utilisation d’expressions régulières, recherche floue ou fonctionnalités qui augmentent la pertinence.
Si la requête est écrite dans le constructeur sans spécifier un champ particulier, la recherche se fait sur « tous champs » de la notice. La requête est analysée comme une série de termes et d’opérateurs. Un terme peut être un seul mot — art
— ou une phrase, entourée par des doubles quotes — »art topiaire
« . La recherche se fait alors en testant la présence de tous les termes et dans l’ordre indiqué, c’est-à-dire le premier terme puis le second (« terme1terme2
« ).
Attention : Il est conseillé d’éviter les copiés-collés de termes ou d’expressions provenant d’éditeurs de texte car cette opération risque de dénaturer les doubles quotes, qui mal interprétées par le moteur de recherche, conduiront à des résultats aberrants.
Utilisation des noms de champs
Si l’on désire rechercher — art
ou topiaire
— dans les mots-clés on fera la recherche :
kw.\*:(art
OR topiaire
)
ou tout simplement
kw.\*:(art topiaire
)
puisque l’opérateur par défaut qui relie les termes est «OR».
Pour rechercher exactement « Smith John
» dans le champ auteur, on écrira :
au.\*: »Smith John
»
Pour aller plus loin, voir : Liste des champs interrogeables en recherche experte
Caractères réservés
Certains caractères sont utilisés pour le traitement des requêtes par le moteur.
Ces caractères sont : + - = && || > < ! ( ) { } [ ] ^ " ~ * ? : \ /
Si vous souhaitez les utiliser dans une requête, il faut les protéger avec le caractère backslash (\).
Par exemple rechercher (1+1)=2 ne sera possible que sous la forme
\(1\+1\)=\2.
Oublier de les protéger conduira à une erreur de syntaxe et à une requête qui ne fonctionnera pas.
Opérateurs booléens
Par défaut tous les termes sont optionnels pourvu que l’un au moins soit trouvé. Une recherche du type peinture
art
rupestre
permettra de trouver les documents contenant au moins peinture
ou art
ou rupestre
; l’opérateur par défaut étant «OR». Elasticsearch accepte les opérateurs habituels «AND», «OR» et «NOT». Mais leur utilisation est moins simple qu’il n’y paraît car «NOT» a la priorité sur «AND», qui a la priorité sur «OR».
Il est possible de mettre des groupes de mots entre parenthèses. Entre ces termes, l’opérateur est alors l’opérateur par défaut, «OR».
L’utilisation des parenthèses permet de former des sous-requêtes. Dans l’exemple suivant :
((peinture
AND rupestre
) OR (art
AND rupestre
) OR rupestre
)
le terme rupestre
est associé à peinture
ou art
ou à aucun terme.
Il est également possible de formuler les requêtes avec les opérateurs « + » et « – » ; l’opérateur « + » indique que le terme doit être présent et l’opérateur « – » que le terme ne doit pas être présent. En l’absence de ces opérateurs, les termes sont facultatifs.
Avec ces opérateurs, la requête précédente s’écrit :
peinture
art
+rupestre
–église
rupestre
doit être présent, église
ne doit pas être présent et peinture
ou art
ou peinture
art
peuvent être présents.
Recherche par Proximité
Alors qu’une recherche par expression exacte (exemple « peinture
rupestre
») suppose de trouver tous les termes exactement dans le même ordre, une recherche par proximité permet d’accepter une distance plus grande entre les termes ou un ordre différent.
Dans l’exemple suivant :
« peinture rupestre
»~3
les termes peinture
et rupestre
pourront être séparés par trois termes au maximun. La distance entre les termes étant supérieure à 2, l’ordre des termes n’est pas maintenu. Dans les résultats de la requête, il pourra y avoir des documents correspondant, par exemple, aux « églises rupestres à peintures
».
Recherche floue
L’opérateur de recherche floue « ~ » permet de trouver des termes qui se ressemblent avec au plus deux changements, qu’il s’agisse de l’insertion, de la suppression, de la substitution d’un seul caractère, ou de la transposition de deux caractères adjacents. Il opère à partir de la 3ème lettre du mot.
Par exemple, témoignage
~ permettra de trouver les notices avec témoinage
, témoinages
, témoignant
et témoigne
.
Par défaut le nombre de changements opérés dans le mot est au maximum de 2, mais il est possible de rechercher les possibilités d’ajout, de suppression ou de substitution d’une seule lettre. Dans ce cas il faudra le spécifier comme dans l’exemple suivant :
témoignage~1 permettra de trouver les notices avec témoinage
. Les notices avec témoinages
, témoignant
et témoigne
ne seront plus récupérées.
Recherche par intervalles
Un intervalle peut être spécifié pour un champ de type date, numérique ou chaîne de caractères. Un intervalle inclusif est indiqué par des crochets [min TO max] et un intervalle exclusif par des accolades {min TO max}.
Par exemple, pour rechercher les documents dont les dates de publications sont antérieures à 2000
, on écrira :
py.\* : {* TO 2000
}
Les accolades et les crochets peuvent être combinés :
py.\* : [2000
TO 2008
} aura pour résultat les notices ayant pour date de publication 2000
, 2001
, 2002
, 2003
, 2004
, 2005
, 2006
et 2007
.
Ce qui peut s’écrire avec les opérateurs booléens :
py.\*:(>=2000
AND 2008
)
ou avec les opérateurs « + » et « – »
py.\*:(+>=2000
+<2008
)
Un intervalle dont une borne n’est pas fixée peut s’écrire :
py.\*:>2000
py.\*:>=2000
py.\*:<2000
py.\*:<=2000
pour les documents dont la date de publication est respectivement postérieure à 2000
, ou supérieure ou égale à 2000, antérieure à 2000 ou dans le dernier cas inférieure ou égale à 2000
.
Augmenter la pertinence
Cet opérateur, appelé boost
, « ^ » permet de rendre un terme plus pertinent qu’un autre. Par exemple si l’on veut trouver tous les documents concernant l’art rupestre
, mais que l’on est plus particulièrement intéressé par l’art rupestre nord africain
, on écrira:
«art rupestre nord africain
»^4
La stratégie de recherche suivante dans le titre:
ti.\*:«art rupestre
» OR ti.\*:«art rupestre nord africain
»^4
permettra d’afficher d’abord les notices concernant l’art rupestre nord africain.
La valeur de l’opérateur boost est, par défaut 1. Les valeurs supérieures à 1 augmentent la pertinence du terme recherché dans les résultats ; alors que les valeurs comprises entre 0 et 1 la réduisent. Les valeurs du boost peuvent être décimales, mais il faut mettre un point au lieu d’une virgule (exemple : 0.2). L’opérateur agit aussi bien sur des unitermes que des groupes de mots.
Utilisation d’expressions régulières
Ce sont des chaînes de caractères qui utilisent une syntaxe précise pour décrire des chaînes de caractères possibles. Suivant la syntaxe utilisée, il est possible de répéter zéro, une ou plusieurs fois des chaînes de caractères d’un mot, ce qui conduit à définir un ensemble de mots dont l’orthographe est proche. Les expressions régulières utilisées dans les équations de recherche permettent de trouver des résultats malgré les erreurs d’orthographe et doivent être encapsulées avec des slashs, comme suit :
au.\*:/joh?n(ath[oa]n)
/
Pour aller plus loin, voir : Recherche par expressions régulières
Les index et sous-index
Chaque index utilisé en recherche simple, avancée ou experte a été paramétré avec des sous-index, pour faciliter la recherche et permettre de retrouver les documents, malgré par exemple, des fautes de saisie dans la requête.
Les sous-index sont fold
, rich
, stem
et raw
.
fold
sépare les mots du texte, les met en minuscules et convertit tous les caractères en leur équivalent ASCII.
rich
sépare les mots du texte sans faire de traitement supplémentaire.
stem
sépare les mots du texte et leur applique un traitement de racinisation selon l’algorithme de Porter.
raw
ne fait aucun traitement.
Chaque index comporte un ou plusieurs sous-index. Les recherches « standard » sont effectuées sur tous les sous-index prévus. En syntaxe Elasticsearch, l’étoile indique que tous les sous-index sont interrogés.
Dans la recherche experte, par exemple,
ti.\*: les sous index fold, rich, et stem seront interrogés car ils ont été paramétrés pour l’index « ti ».
Pour aller plus loin, voir : Liste des index et sous-index
Il est possible de faire des requêtes en spécifiant un sous-index précis, à condition que celui-ci ait été paramétré pour l’index interrogé. Dans ce cas la syntaxe Elasticsearch sera, par exemple, pour une recherche avec le sous-index rich
dans le titre :
ti.rich : pigment
L’utilisation de l’index stem
permettra de récupérer des documents ayant pigmente
, pigments
, pigmented
, pigmentation
ou pigmenté
dans le titre.
Pour utiliser les sous-index avec un groupe de mots il faut rechercher avec l’expression exacte, pour éviter que le moteur de recherche n’interprète l’espace entre les mots comme un «OR».
ti.fold : « eaux-fortes
»