Le fonctionnement de la recherche, décrit sur cette page, vaut pour toutes les ressources (lectrices et lecteurs, document, bibliothèques, etc.).
Opérateurs booléens et astuces de recherche
Par défaut, le système de recherche interprète les espaces comme des opérateurs AND
. Il est possible d'utiliser des modificateurs de recherche et d'autres opérateurs booléens selon la syntaxe simple query d'ElasticSearch.
Symbole | Description | Exemple | Effet |
---|---|---|---|
* |
Troncature | culture* |
Recherche les ressources commençant par "culture", comme "culture", "culturel", "culturelle", etc. |
+ |
Opérateur booléen ET | chien + chat |
Recherche les ressources contenant "chien" et aussi "chat". Si rien est spécifié, l'opérateur ET s'appliquera de toute façon. |
| |
Opérateur booléen OU | vélo | bicyclette |
Recherche les ressources contenant soit "vélo", soit "bicyclette" |
- |
Opérateur booléen SAUF | tintin -tibet |
Recherche les ressources contenant "tintin" mais pas "tibet" |
() |
Parenthèses, pour combiner les opérateurs | mobilité + (vélo | bicyclette) |
Recherche les ressources contenant "mobilité" et soit "vélo", soit "bicyclette" |
"" |
Expression exacte | "revue littéraire" |
Recherche les ressources contenant l'expression exacte "revue littéraire", tout en appliquant le niveau d'analyse du champ en question (éventuelles racinisation et tokenisation, voir ci-dessous). |
Facettes, filtres
Les facettes permettent de filtrer les résultats d'une recherche. Des facettes différentes existent selon les types de ressources. La sélection d'une facette modifie l'URL de recherche en lui ajoutant un paramètre.
Voir aussi: API de recherche > Paramètres de l'URL
Exemple: &document_type=docmaintype_book&document_subtype=docsubtype_other_book
(vue professionnelle / vue publique / API)
- Il s'agit d'une facette sur le type et sous-type de document livre, texte > autre livre
?
pour insérer des paramètres.q=
pour une requête vide.&
pour ajouter un paramètre.document_type=docmaintype_book
pour la facette de premier niveau (livre, texte).&
pour ajouter un deuxième paramètre.document_subtype=docsubtype_other_book
pour la facette de deuxième niveau (autre livre).
Nouvelles acquisitions
Il est possible de construire des URL pour afficher la liste des nouvelles acquisitions, dans la vue publique ou professionnelle. Il suffit d'ajouter le filtre suivant à l'URL de requête : new_acquisition=[date de début]:[date de fin]
. Ce filtre peut être combiné avec des recherches expertes.
Voir: Exemples de recherches
Niveaux d'analyse des champs
Afin de comprendre le fonctionnement de la recherche, il est important de savoir comment les champs de la base de données sont traités par le moteur de recherche. En effet, RERO ILS tire parti des fonctions d'analyse du moteur ElasticSearch afin, par exemple, de pardonner des erreurs de frappe ou de substituer un mot d'un titre au pluriel ou au singulier. Les champs sont indexés selon quatre niveaux d'analyse :
- Champ brut, non-analysé. La recherche ne renvoie que les termes exacts correspondants.
Exemple: les code-barres. - Insensibilité aux diacritiques et à la casse.
Exemples: les codes ou types de ressource. - Tokenization (analyse lexicale, insensibilité aux signes de ponctuation…) et insensibilité aux diacritiques et à la casse. Niveau utilisé pour la majorité des champs.
Exemples: les noms des auteurs, les éditeurs, etc. - Analyses précédentes et stemming (racinisation). Analyse des racines des mots pour le français, l'anglais, l'allemand et l'italien.
Ce traitement est utilisé pour les champs avec du langage naturel et des noms communs dans l'interface publique (notamment titre et résumé). Comme il est effectué pour quatre langues, il peut générer du bruit dans les résultats puisqu'un mot d'une langue précise est racinisé indifféremment selon les règles des quatre langues. Ceci explique également de légères différences de résultats en cas de recherches avec ou sans diacritiques ("résumé" vs. "resume"): dans un tel cas, il se peut que des règles de racinisation n'existent que pour une seule langue, ce qui affine donc la recherche.
Recherche experte
Principes de base
Pour le professionnel, une recherche experte est disponible au moyen d'une option à activer au-dessous du champs de recherche dans la page qui liste les éléments d'une ressource existante (utilisateurs, documents, catégories de circulation…).
La capture ci-dessus montre la recherche simple. On la reconnaît par le paramètre simple=1
dans l'URL.
Une fois l'option activée (simple=0
), la fonctionnement du champ de saisie de la recherche permet de saisir des requêtes plus complexes et plus précises. Toutefois, ce mode de recherche a les conséquences suivantes :
- Il n'autorise pas d'erreur de syntaxe dans la requête.
- La pertinence des résultats n'est plus la même, notamment parce que c'est l'opérateur
OU
qui est choisi lorsqu'aucun opérateur n'est précisé entre les termes.
C'est pourquoi ce mode n'est pas le mode par défaut et qu'elle ne peut pas être activée depuis l'interface publique. Il est possible de faire une recherche experte dans l'interface publique, mais il faut modifier manuellement le paramètre en ajoutant &simple=0
dans l'URL de la recherche.
Syntaxe
La syntaxe des recherche experte est décrite en détail sur la page de l'API REST.
La syntaxe de la recherche experte est la même que celle de l'API, sauf qu'il ne faut pas utiliser %5c
pour encoder le backslash.
- Exemple dans l'API:
/api/documents/?q=title._text.%5c*:"harry potter et la coupe de feu"
- Exemple dans l'interface professionnelle:
title._text.\*:"harry potter et la coupe de feu"
Ces syntaxes se basent sur la query string d'ElasticSearch, qui contient sa propre documentation technique.
Exemples de recherches expertes
Voir: Exemples de recherches
Recherche via les API
Il est possible de faire des recherches en mode avancé au moyen des API. Certaines sont publiques et accessibles à tout le monde (par exemples l'index des documents et exemplaires), alors que d'autres nécessitent des permissions de bibliothécaire, voire de bibliothécaire système.
Voir: API de recherche
-
À noter que ElasticSearch préconise de ne pas utiliser ce mode dans un champ de recherche. ↩