Configuration du moteur de recherche Elasticsearch

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 faire l'installation sur votre instance  https://support.collecto.ca/portal/newticket

1. OPAC

1.1 Préférence système

  1. Une nouvelle préférence système a été crée pour utiliser Elasticsearch seulement à l’OPAC :  SearchEngineOpac . Par défaut, lors de l’installation d’Elasticsearch, la préférence système sera positionnée sur Elasticsearch. Si vous souhaitez continuer à utiliser Zebra, vous devez modifier le choix dans le menu déroulant.

  1. Préférences systèmes Zebra à modifier
  2. QueryAutotruncate : il faut que ce soit positionné à  Seulement si un * est ajouté

1.2 Configuration du moteur de recherche

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




Dans la nouvelle page affichée, 3 onglets vont se présenter

Ne pas tenir compte de la mention "Elasticsearch est désactivé". Ce message vient du fait que Elasticsearch ne fonctionne pas pour l'intranet.



1.2.1 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, j’ai modifié copydate 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.

  • Dans la colonne Type, vous trouverez quel type d’index il s’agit. Cette colonne ne doit pas être modifiée. Les types choisis correspondent à ce qui est préconisé dans Bib-1 pour l’échange de données Z39.50  http://www.loc.gov/z3950/agency/defns/bib1.html
  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.
Voir un exemple en vidéo ici https://www.screencast.com/t/NyRTWIB8T4

1.2.2 Onglet Notices bibliographiques

Dans cet onglet, vous trouverez six colonnes.

Je vous conseille de noter tous les changements apportés à ce tableau


Si vous modifiez un des paramètres dans ce tableau, pensez à sauvegarder en cliquant sur le bouton Sauvegarder en bas de la page.


  • 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 marc recherchée 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 disponible, ceux qui apparaissent dans l’onglet Champs de recherche , 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 740t.

Dans l’exemple ci-dessous, je vais faire l’ajout d’un champ de recherche sur l’index isbn pour la zone 765$z.



Il faut cliquer ensuite sur Ajouter, puis sur Sauvegarder .


Si vous ne souhaitez pas qu'une zone soit interrogeable, vous pouvez positionner sur non le menu déroulant dans la colonne Interrogeable. Ce menu déroulant aura préséance sur le menu déroulant Interrogeable dans l'onglet Champs de recherche



L'ajout d'un index demande une indexation de la base de données pour que ce soit pris en compte dans les résultats de recherche.

Une indexation complète de la base de données a lieu toutes les nuits.

1.2.3 Groupe 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).

Pour créer un nouveau groupe de facette qui n'apparait pas dans la liste du tableau Ordre des facettes, contactez-nous ici 

1.2.4 Onglet Autorités

Documentation à venir

1.3 Liste mots vides


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

2. Problèmes connus avec Elasticsearch

2.1 Certaines notices n'apparaissent pas à l'opac


Parfois une notice ne sortira pas dans les résultats de recherche à cause d'une zone 651$e qui est présente dans une notice mais qui est vide. La 651$e est en général une zone qui n'est pas remplie mais dans certaines notices, elle s'est rempli de vide. Pas facile à expliquer mais c'est comme si des caractères s'inscrivaient dans la zone mais qu'on ne les voyait pas. 
Bref, cette zone 651$e vide/pas vide cause des problèmes lors de l'indexation du moteur de recherche et Elasticsearch les ignore.
Pour repérer ces notices, une requête SQL peut être crée pour aller modifier ensuite ces notices en lot pour supprimer cette zone 651$e vide/pas vide

Requête à exécuter :
select *,
CONCAT('<a href="/cgi-bin/koha/cataloguing/addbiblio.pl?biblionumber=',biblionumber,'\"target="_blank">',biblionumber,'</a>') as 'Modifier notice'
from biblio_metadata
where biblio_metadata.metadata like '%<datafield tag="651"%<subfield code="e"></subfield>%'
Dans la colonne Modifier notice, il y a un lien pour se rendre directement dans la notice, le fait de juste cliquer sur Enregistrer va faire en sorte de rajouter la notice dans l'indexeur et la zone 651$e sera cette fois-ci bien ignorée.


Les notices peuvent être modifiées en lot grâce à un modèle de modification Marc (Outils > Modèles de modifications Marc)
Cliquez sur Nouveau modèle et donnez un titre à votre modèle


Ensuite, vous cliquez sur Nouvelle action


Vous remplissez comme ceci

Cliquez sur Ajouter action

Ensuite, vous devez récupérer la liste des biblionumbers du rapport sql et vous rendre dans l'outil de Modification de notices par lot et utiliser le modèle que vous venez de créer.

2.2 Facette pour les langues


Le bloc de facette pour les langues affiche par défaut les codes inscrit dans la zone 008 (position 35-37) comme fre, eng, spa....
Si vous souhaitez faire apparaitre ce bloc, vous pouvez rajouter du code javascript dans la préférence système opacuserjs pour remplacer les codes par le nom de la langue. Il faudra cependant le faire pour toutes les langues pouvant s'afficher dans les facettes dans une liste de résultats.

$("span.facet-label a:contains('fre')").text("Français");
$("span.facet-label a:contains('eng')").text("Anglais"); 
$("span.facet-label a:contains('spa')").text("Espagnol"); 

2.3 Moteur de recherche ElasticSearch et les points d'interrogation 

Lors d'une recherche avec ElasticSearch, l'utilisation du symbole ? dans ma requête mène à une erreur :


Si je mets un espace avant le symbole ?, j'obtiens le bon résultat, même si dans le titre du document il n'y a pas d'espace :


J'obtiens également le bon résultat si je cherche le titre du document sans le symbole.

Le problème est rencontré dans la recherche avancée et la recherche simple et peu importe si on utilise l'index Titre ou Tous les mots.

    • Related Articles

    • Recherche par produit

      La recherche peut se faire grâce à l’information qui concerne le produit (nom du produit, le numéro de CAS, le Code Reprofics, les classes SIMDUT (SIMDUT 1988 et 2015) et l’état physique. À cet endroit, il est également possible de sortir votre ...
    • Recherche par localisation

      La recherche par localisation peut se faire en sélectionnant un bâtiment (s’il y a lieu, en fonction du code d’accès de l’utilisateur) un local, une division (étagère, cabinet métallique, etc.), une sous-division (tablette, tiroir, etc.) ou un ...
    • Comment lancer une recherche d’inventaire?

      Sélectionner l'onglet inventaire, l'option "Recherche". Bordereau de recherche Voici l’aperçu de cette fenêtre: Cette première section contient les champs de recherches concernant les informations générales du produit et la recherche une localisation ...
    • 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 ...
    • Modifier l’apparence d’une recherche d’inventaire

      Par défaut, les produits apparaissent dans l’ordre numérique, suivi de l’ordre alphabétique (anciennement par ordre d’entrée des données). Il est possible de modifier l'apparence des résultats d'une recherche recherche d'inventaire grâce au bouton ...