logo bdsp

Banque de données en santé publique

Recherche experte

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 Voir les résultats permet de visualiser les résultats. Le bouton Rechercher 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 — accident  — ou une phrase, entourée par des doubles quotes — "accident nucléaire". 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.

1. Utilisation des noms de champs
Si l’on désire rechercher — accident ou nucléaire — dans le titre on fera la recherche :
ti.\*:(accident OR nucléaire)
ou tout simplement
ti.\*:(accident nucléaire)
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

2. 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.

3. Opérateurs booléens
Par défaut tous les termes sont optionnels pourvu que l’un au moins soit trouvé. Une recherche du type accident irradiation nucléaire permettra de trouver les documents contenant au moins accident ou irradiation ou nucléaire ; 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 :
((accident AND nucléaire) OR (irradiation AND nucléaire) OR nucléaire)
le terme nucléaire est associé à accident ou irradiation 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 :
accident irradiation +nucléairegamma
nucléaire doit être présent, gamma ne doit pas être présent et accident ou irradiation ou accident irradiation peuvent être présents.

4. Recherche par Proximité
Alors qu’une recherche par expression exacte (exemple "accident nucléaire") 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 :
"cancer diagnostique"~3
les termes cancer et diagnostique 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, à "diagnostique dans le cancer".

5. 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, einstien~ permettra de trouver les notices avec einstein.

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 :
ribonuclease~1 permettra de trouver ribonuclease4, ribonuclease5, ribonucleaseA.
Alors qu’une recherche avec :
ribonuclease~2 élargira la recherche en permettant une addition ou une substitution de 2 caractères et permettra de trouver d’autres ribonucléase, comme ribonucleaseII ou d’autre termes liés au ribonucléases comme ribonucleates, ribonuclear

6. 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 à 2012, on écrira :
py.\* : {* TO 2012}
Les accolades et les crochets peuvent être combinés :
py.\* : [2010 TO 2017} aura pour résultat les notices ayant pour date de publication 2010, 2011, 2012, 2013, 2014, 2015 et 2016.
Ce qui peut s’écrire avec les opérateurs booléens :
py.\*:(>=2010 AND 2017)
ou avec les opérateurs « + » et « – »
py.\* : (+>=2010 +<2017)
Un intervalle dont une borne n’est pas fixée peut s’écrire :
py.\*:>2010
py.\*:>=2010
py.\*:<2010
py.\*:<=2010
pour les documents dont la date de publication est respectivement postérieure à 2010, ou supérieure ou égale à 2010, antérieure à 2010 ou dans le dernier cas inférieure ou égale à 2010.

7. 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 les ribonucléases, mais que l’on est plus particulièrement intéressé par les endoribonucléases, on écrira:
"endoribonuclease"^4
La stratégie de recherche suivante dans le titre:
ti.\*:"ribonuclease" OR ti.\*:"endoribonuclease"^4
permettra d’afficher d’abord les notices concernant les endoribonucléases.
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.

8. 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

9. 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 : NaCl
L’utilisation de l’index « stem » permettra de récupérer des documents ayant nacl, Nacl ou NACL 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 : "prevention cancer"