Comportement d'ElasticSearch

Comportement d'ElasticSearch

Cet article a pour but de regrouper les différents comportements d'ElasticSearch et autres informations qui vous permettent de comprendre ce moteur de recherche et les résultats de vos requêtes. 
À noter que ce moteur de recherche est toujours en développement et les configurations peuvent changer au fil des commentaires, découvertes et problématiques qui peuvent survenir. Une grande partie des informations et des exemples de l'article suivant sont une traduction des informations d'un article de ByWater Solutions : https://bywatersolutions.com/education/elastic-searching

Configurations d'ElasticSearch

En ce moment, dans la version 21.05, la page de configurations ElasticSearch ne peut pas être modifiée. Si vous tentez de changer une information dans cette page, les changements ne seront pas enregistrées. Lorsque ce sera de retour, dans les versions ultérieures, vous serez avisé.e.s et des recommandations seront données. En attendant, cette section vous présente les possibilités lorsque ce problème sera corrigé et vous pourrez obtenir certaines informations, comme sur les zones et sous-zones recherchables dans les index.


Dans la section Administration, dans la partie Catalogue, un nouveau lien vous amène à la configuration du moteur de recherche.




Dans la page, 3 onglets vont se présenter.


Champs de recherche

Dans cet onglet, les différents index sont listés dans la colonne Nom.

  • Les index correspondent à ceux mis en place par la norme CCL. Chaque index correspond à une zone/sous-zone du langage Marc21.
  • Dans la colonne Étiquette, le mot inscrit correspond au nom du groupe de facette que vous allez trouver à l’OPAC dans un résultat de recherche.

Par défaut, le mot dans la colonne Étiquette sera identique au mot dans la colonne Nom.

Dans l’exemple ci-dessous, copydate a été changé par Date de publication dans la colonne Étiquette.


À l’OPAC, c’est Date de publication qui apparaît dans l’intitulé du bloc de facette.



Dans la section suivante 1.2.2 Bibliographique, vous pourrez voir à quelle zone marc cette information correspond.

  1. Dans la colonne Interrogeable, vous pouvez choisir si le champ pourra être recherché à l'opac. Par défaut, tout est positionné sur Oui. Par exemple, si vous ne souhaitez pas que la recherche sur le résumé (zone 520$a) soit possible, vous pouvez positionner le menu déroulant sur Nom pour le champ Abstract. Lors d'une recherche Tous les mots à l'opac, la recherche ne se fera plus dans la zone 520$a.
  2. Dans la colonne Poids, vous pouvez inscrire un nombre pour que le champ ait plus de poids qu'une autre dans une recherche. Par exemple, si j'inscris 100 dans la case Poids du champ Abstract (Résumé/zone 520$a), lors d'une recherche Tous les mots, les notices avec un résumé contenant les mots recherchés vont apparaitre en haut de la liste même s'il existe une notice avec un titre exact à ma recherche.

Notices bibliographiques

Dans cet onglet, vous trouverez sept colonnes.
  • Dans la colonne Champs de recherche, vous retrouverez les index définis dans l’onglet Champs de recherche , colonne Étiquette .
  • Dans la colonne Configuration , vous trouverez la zone et ses sous-zones MARC recherchées pour cet index. La mention « leader » correspond à la zone 000.
  • La colonne « Facettable » permet de définir si vous souhaitez que la zone MARC soit intégrée aux facettes ou non.
  • L’impact de la colonne Influençable est floue. La documentation sera complété plus tard.
Tout en bas de ce tableau, vous trouverez un menu déroulant pour rajouter un nouveau champ de recherche à la liste.


Dans la liste, vous trouverez les index disponibles, ceux qui apparaissent dans l’onglet Champs de recherche, dans la colonne Nom .

Une fois le champ de recherche choisi, vous devez définir si ce champ doit être triable (indéfini ou 1) et inclus dans les facettes (oui ou non). Dans le champ libre, vous devez inscrire la zone marc. Pour une zone complète, vous devez inscrire par exemple "740". Pour seulement une sous-zone, vous devez inscrire la zone et le $ de la sous-zone voulu, par exemple "740t".


Ordre de facettes

Dans le tableau en bas de la page sous l'onglet Notices bibliographiques, vous pouvez choisir quel groupe de facettes faire apparaitre en liste de résultats.
Le groupe de facettes Term and Genre correspond aux zones 655 des notices (Genre et forme).



Onglet Autorités

Dans cet onglet, on retrouve le même tableau que dans l'onglet Notices bibliographiques avec les mêmes sept colonnes et le fonctionnement de ce tableau est le même. Les modifications apportées à ces configurations impactent la recherche dans le module d'autorités à l'Intranet et la recherche d'autorités à l'OPAC si elle est activée.

Opérateurs booléens

ElasticSearch est très sensible lorsque vient le temps d'utiliser les opérateurs booléens. Depuis le passage à ES, nous avons dû modifier différentes configurations dans Koha pour ajuster les opérateurs qui doivent être inscrits en anglais et en majuscules.

Ainsi, si vous utilisez les opérateurs booléens dans la barre de recherche simple, il est impératif d'écrire le ET, le OU et le SAUF de cette manière :
  1. AND
  2. OR
  3. NOT
Comme dans une formule mathématique, si on retrouve plusieurs opérateurs dans l'équation, un ordre de priorité est appliqué par ElasticSearch. L'ordre est AND, OR puis NOT.

Ainsi, si la requête de recherche est la suivante : chat OR chien AND oiseau la requête sera comprise comme ceci par ES : chat OR (chien AND oiseau).
Si on veut faire des regroupements, il vaut donc mieux utiliser les parenthèses. On peut alors changer la requête par (chat OR chien) AND oiseau, ce qui change complètement le résultat de recherche.

À noter aussi que certains symboles remplacent les opérateurs ou affectent la recherche.

  1. Espace : Lorsque vous mettez simplement un espace entre deux termes, le moteur de recherche le considère comme un ET
    1. Guillement : Si vous voulez que deux termes soient cherchés ensemble, en expression exacte, il faut les encadrer de guillemets anglais " "
  2. Tiret : Le tiret peut remplacer le SAUF. N'ayez crainte, un trait d'union ne place pas un SAUF dans votre requête. Pour utiliser le tiret comme opérateur, il faut mettre un espace avant le tiret et coller le tiret sur le terme à exclure. La requête ressemblera donc à : TERME1 -TERME2. Ainsi, le terme arc-en-ciel sera bien cherché tel quel, alors que la requête arc -en -ciel permettra de trouver uniquement les documents avec le terme arc

Index de recherche 

Comme avant, il est possible dans la barre de recherche simple de préciser un index en l'écrivant. On peut effectivement écrire title:chat qui cherchera alors le terme chat dans les titres du catalogue. On peut évidemment simplement sélectionner l'index dans le menu déroulant, mais inscrire l'index peut permettre de chercher deux termes dans deux index. On peut donc chercher title:chat author:Tremblay, par exemple, pour trouver les documents dont le titre contient chat et dont l'auteur a pour nom Tremblay (en sachant que l'espace sert d'opérateur ET).

Attention : ElasticSearch oublie l'index dans lequel on cherche si on met un opérateur !
Ainsi, si on inscrit title:chat OR chien, il interprète la requête comme ceci : title:chat OR kw:chien (kw étant l'index Tous les mots qui est l'index par défaut en recherche simple).
Si on veut chercher les deux termes dans le même index, il faudra répéter l'index, comme ceci : title:chat OR title:chien ou alors simplement utiliser le menu des index.

Troncature et caractères spéciaux

La troncature dans ElasticSearch est encore influencée par ce que vous indiquez dans la préférence système QueryAutoTruncate. Cette préférence permet d'automatiser la troncature ou de la faire dépendre de l'utilisation de l'astérisque *. 

Ainsi, si on choisit l'option automatique, le terme cherché chat trouvera aussi les documents avec le terme châteaux, à tous les coups.
Si on choisit l'option seulement si un * est ajouté, le terme chat ne trouvera pas les documents avec le terme châteaux, sauf si on ajoute un astérisque. Le terme chat* trouvera alors châteaux.

On peut aussi remplacer une lettre par un ? pour trouver les variations d'un mot dont un seul caractère change. On remplace ce caractère par le ?. Par exemple le terme batm?n va renvoyer les documents avec batman et ceux avec batmen. 

L'astérisque sert aussi de caractère spécial comme le point d'interrogation et peut-être placé au milieu d'un terme recherché. Le ? ne remplace qu'un caractère, mais si on veut chercher un terme avec des variations de 0 à plusieurs caractères, on pourra alors chercher le terme avec un astérisque. Le terme bat*man trouvera donc les Batman et les Batwoman de votre catalogue.

"Stemming"

Le "stemming" est probablement la fonctionnalité actuelle d'ElasticSearch qui génère le plus de bruit. En effet, depuis le passage à ElasticSearch, un des constats est que les requêtes renvoient une quantité plus importante de résultats qu'avant. Nous travaillons présentement à enlever le stemming pour permettre d'obtenir des résultats de recherche plus pertinent avec ES. En attendant, voici ce que ES prévoit :

Avec Zebra, la préférence système QueryStemming, une fois activée, permettait d'obtenir des résultats de recherche ayant la même racine que le terme recherché. Le terme Espace pouvait donc trouver Espacement ou Michèle pouvait trouver Michelle, par exemple. Si la préférence n'était pas activée, les mots de même racine n'étaient pas trouvés.

En ce moment, ElasticSearch a une fonction équivalente intégrée dans son code. Ainsi, la préférence système QueryStemming ne change pas les résultats, qu'elle soit active ou non. 

Dans tous les cas, les résultats de recherche vont donc inclure des termes ayant la même racine que le terme recherché, en allant jusqu'à ignorer l'utilisation des guillemets. 
Le stemming donne donc des résultats similaires à l'utilisation de l'astérisque puisque George trouvera Georges de la même façon que George* le ferait, mais pas pour la même raison.

"Fuzzying"

La préférence système QueryFuzzy permet de chercher des termes à consonnance similaire avec l'ajout d'un tilde (~). Activer la préférence système QueryFuzzy ne fait donc pas en sorte qu'ElasticSearch trouvera des termes à consonnance similaire automatiquement. Si on active la préférence, le comportement de la recherche ne change pas tant que le tilde n'est pas ajouté à la requête et si la préférence est désactivée, l'ajout du tilde ne fait absolument rien.

La fonction de fuzzy remplace, ajoute ou supprime un ou des caractères dans le terme recherché pour trouver les termes à consonance similaire. Pour le faire, la fonction de fuzzy s'adaptera à la longueur du terme recherché. Ainsi, le fuzzy fera jusqu'à 2 changements dans un mot de 6 caractères ou plus, 1 changement dans un mot de 3 à 5 caractères et aucun changement dans un mot de 2 caractères ou moins.

Ceci peut alors servir notamment à chercher le nom d'un auteur quand on est incertain de l'orthographe. Le résultat ressemblera à ceci avec l'activation et l'utilisation du tilde : azarelo~ trouvera bien les documents de l'auteur même si on a fait une faute dans le nom. En effet, le fuzzy changera jusqu'à 2 caractères dans le terme azarelo~ et sera donc en mesure de trouver la bonne façon d'écrire le nom de l'auteur, soit azzarello (ajout de 2 caractères, soient un z et un l).

Proximité

L'utilisation du tilde avec un chiffre permet de faire des recherches en fonction de la proximité des termes recherchés. Contrairement à d'autres moteurs de recherches qui vont permettre la recherche en fonction de la proximité en comptant le nombre de mots entre deux termes, la proximité dépend du nombre de changements apportés à la requête pour obtenir la forme trouvée, un peu comme le fait le fuzzing.

Donc si on compare avec le fuzzying, on peut dire que ce dernier compte le nombre de caractères changés/ajoutés/supprimés, alors que la recherche par proximité compte le nombre de mots changés/ajoutés/supprimés dans la requête.

Ce qui veut dire que la requête "batman robbin"~1 ne veut pas dire : cherche les mots batman et robin séparés par 1 mot ou moins.
Il faut plutôt lire : cherche "batman robin" et toutes les autres formes de ces deux mots qui nécessitent 1 changement ou moins. Un changement peut alors être l'ajout d'un mot, le retrait d'un mot ou même la position des mots dans la requête.

Ainsi, la requête "batman robbin"~1 pourra trouver les documents qui ont toutes ces formes du groupe de mots :
- "batman robin" (aucun changement)
- "batman et robin" (1 changement, ajout du et)
- "batman & robin" (1 changement, ajout du &)
- "robin batman" (1 changement, ordre des termes changé)
- etc. 

Échapper la ponctuation

Dans ElasticSearch, la ponctuation n'est pas toujours appréciée. Comme l'a montré cet article, la ponctuation est souvent utilisée pour faire une action spéciale. Ainsi, pour éviter de mêler le moteur de recherche, on pourra "échapper" la ponctuation, c'est-à-dire la considérer comme un caractère ordinaire plutôt qu'un "joker" de recherche.

Pour ce faire, on ajoutera une barre oblique inversée. Ainsi, pour chercher le titre "Les fleurs du mal : spleen et idéal" on inscrira "Les fleurs du mal \: spleen et idéal" pour éviter que le : soit considéré comme un symbole spécial.

Les symboles suivants devraient être accompagnés d'une barre oblique inversée si on ne veut pas les considérer comme un symbole spécial : 

· +            · -              · =              · &             · ||            · et <            · !            · et )             · { et }            
· [ et ]            · ^            · "            · ~            · *            · ?            · :            · \ et /


Note : Les informations de cet article et la liste des symboles font partie de la documentation internationale au sujet d'ElasticSearch. Nous n'avons pas pu confirmer l'ensemble de l'impact de ces symboles sur la recherche, mais nous avons constaté quelques soucis quand il y a certains symboles, comme le point d'interrogation.

En effet, un point d'interrogation collé sur un mot donne aucun résultat :


Si on met la barre oblique inversée, on obtient le résultat voulu :


Ceci dit, mettre un espace entre le mot et le point d'interrogation ou simplement ne pas mettre le point d'interrogation nous donne également les bons résultats.

Donc, il se pourrait que certains symboles ne posent pas problème du tout, mais dans un cas où vous ne trouvez pas les documents voulus, il serait conseillé de tenter la recherche en mettant la barre oblique inversée devant le ou les symboles dans votre requête.


Mots vides

Voir fichier attaché à cette documentation pour voir les mots-vides qui sont exclus d'une recherche.

    • Related Articles

    • Configuration du moteur de recherche Elasticsearch

      Elasticsearch est le nouveau moteur de recherche qui peut remplacer Zebra si vous le souhaitez.  Pour l'instant (mai 2021), Elasticsearch ne peut être utilisé qu'à l'OPAC.  Si vous souhaitez utiliser Elasticsearch, veuillez nous contacter pour en ...
    • Plan de test – Recherche dans le catalogue

      Source de la documentation en anglais : https://bywatersolutions.com/education/koha-testing-plan Pour la documentation internationale en anglais, vous pouvez consulter ce lien https://koha-community.org/manual/20.11/en/html/ ou en français (en cours ...
    • Recherche par numéro de catalogue

      La recherche par numéro de catalogue d’un produit peut s’avérer très efficace lorsqu'il est connu afin de répertorier une fiche de données de sécurité. Où puis-je le trouver? Sur la fiche de données de sécurité, celui ci peut être identifié entre ...
    • Code javascript pour l’intranet

      0. Configuration La préférence système intranetuserjs peut être utilisé pour activer du code java à l’intranet. Les codes qui sont listés ci-dessous doivent être inscrit entre ces deux balises en rouge (les balises ne doivent apparaître qu’une fois ...
    • Recherche rapide (Parcourir) avec OpacBrowseSearch 20.05 (ElasticSearch seulement)

      Vous avez maintenant la possibilité de rendre disponible sur votre OPAC une fenêtre de recherche simplifier pour effectuer des recherches rapides. Cette fonctionnalité ne marche qu'avec le moteur de recherche ElasticSearch. Pour ce faire, vous devez ...