Prérequis
Attention, il vous faudra au préalable disposer de Java et installer :
- Elasticsearch dans sa branche 5
- apache tika server
- ainsi qu’extracteur de documents pour extraire le texte et le titre des documents bureautiques.
Il faut également disposer de l’extension cURL pour php :
Sous windows, vous devez décommenter dans votre php.ini :
extension=php_curl.dll
Il faut ensuite recharger ou redémarrer apache.
Vous devez lancer pour commencer le serveur tika avec la commande suivante depuis le répertoire où vous l’avez déposé :
java -jar tika-server-1.14.jar
Puis lancez Elasticsearch avec la commande suivante depuis le répertoire où vous l’avez déposé sur Linux-like :
sh bin/elasticsearch
ou sur Windows :
bin\elasticsearch.bat
Installation
Ce plugin s’installe comme tous les plugins par l’intermédiaire du gestionnaire de plugins de SPIP. Merci de vous référer à la page dédiée.
Configuration
Par défaut, Elasticsearch se lance sur le port 9200 et tika sur le 9998.
Vous pouvez vérifier qu’ils sont lancés en ouvrant le navigateur sur ces ports, par exemple, si vous travaillez en local :
http://localhost:9200
et http://localhost:9998
.
Vous devrez ensuite configurer l’extracteur de documents avec le nom du serveur et le port de tika (localhost et 9998 si vous êtes en local). Le plugin Elasticsearch devra être aussi réglé avec ses url et port de serveur (http://localhost:9200
si vous êtes en local).
Renseignez ensuite un nom pour l’index.
Utilisation
Après avoir installé et configuré le plugin Elasticsearch, vous pourrez alors lancer l’indexation.
Le plugin indexe les articles par lot de 500 sur le site et pour les documents par 20. L’indexation est une liste de travaux et donc est lancée lorsqu’il y a des visites.
Nous vous recommandons un module complémentaire pour votre navigateur afin de faire un rafraîchissement automatique d’une page du site si vous êtes en local.
Les nouveaux articles ou documents sont indexés au fil de leur publication.
Une fois l’ensemble des contenus indexés vous pouvez relancer une indexation complète si nécessaire : si vous faites d’énormes modifications sur vos contenus, par exemple une modification d’arborescence. Tous les cas ne sont effectivement pas encore gérés mais c’est un début fonctionnel.
Il n’y a alors pas d’interruption de service car l’ancien index reste utilisé pour les recherches tandis que toutes les modifications du site se font dans le nouvel index. Une fois l’indexation regénérée, l’ancien index est supprimé et les recherches se font alors sur le nouvel index.
État des lieux
Problèmes connus et améliorations prévues :
- si vous réinitialisez la liste des travaux pendant l’indexation cela l’arrête ;
- si vous déplacez une rubrique la hiérarchie des articles n’est pas mise à jour ;
- l’usage de l’analyseur ngram est temporaire (il remonte trop de résultats), il est prévu d’utiliser le fuzzy dans le futur en remplacement si les performances ne s’en trouvent pas trop affectées, ce qui était le cas lors de mes essais ;
- il est difficile de prévoir un front cohérent, pour l’instant, il s’adapte à un squelette Z avec
content
, et il n’y a pas de style embarqué ; - il est difficile de prévoir du générique pour la partie publique ainsi que la manière d’indexer car ce que l’on souhaite indexer va dépendre de chaque site. Il faut travailler un peu mais vous avez un exemple de fonctionnement et il est assez rapide de fournir un squelette avec un mapping spécifique, un “put” spécifique à vos objets et un requêtage.
- l’utilisation de squelettes était simplement pour produire quelque chose de fonctionnel rapidement, il est prévu de refaire en PHP certaines parties qui sont inutilement en squelettes.
- une première version qui comprenait un autre objet (formations) ainsi que l’utilisation d’accès restreint (qui complique beaucoup les choses) est utilisée en production. Cette version simplifiée va permettre de repartir sur une base plus saine.
Références
- Installer Apache Tika : https://tika.apache.org/0.7/gettingstarted.html
- Elasticsearch : https://www.elastic.co/
- cURL : https://curl.haxx.se
Discussions by date of activity
One discussion
Bonjour,
deux questions :
- Elasticsearch est actuellement à la version 7.2.1. Or vous dites dans les prérequis “Elasticsearch dans sa branche 5”. La branche 7 est-elle compatible avec le plugin ?
- Lors de la configuration du plugin il est demandé un nom d’index. Quoique je mette, le nom semble disparaître. Quel nom d’index choisir ?
- Je crois comprendre que c’est le plugin qui se charge de l’indexation... exact ? Comment forcer la réindexation du site ?
Francois Sauterey
Reply to this message
Add a comment
Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :
Merci d’avance pour les personnes qui vous aideront !
Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.
Follow the comments: |