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.
1. OPAC
1.1 Préférence système
- 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.
- Préférences systèmes Zebra à modifier
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
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.
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.
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.