Elasticsearch

Un connecteur pour brancher un site SPIP et indexer le contenu dans le moteur d’indexation et de recherche Elasticsearch. Actuellement, seul les articles et les documents bureautiques sont pris en charge, c’est une contribution en chantier qui doit encore beaucoup évoluer, mais qui peut être utilisable avec un peu d’effort.

Prérequis

Attention, il vous faudra au préalable disposer de Java et installer :

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

Plugin testé avec apache tika v1.14 et toutes les versions de la branche 5 d’Elasticsearch jusqu’à la 5.4.0 incluse.

Discussion

Une 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

    Répondre à ce message

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

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.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom