Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Mise en oeuvre de la recherche Rubedo avec Elasticsearch

Julien Bourdin
September 16, 2013

Mise en oeuvre de la recherche Rubedo avec Elasticsearch

Support du retour d'expérience de la mise en oeuvre du moteur de recherche Elasticsearch au sein du CMS Rubedo.
Meetup du 16 septembre 2013

Julien Bourdin

September 16, 2013
Tweet

More Decks by Julien Bourdin

Other Decks in Technology

Transcript

  1. 16 septembre 2013 Mise en œuvre des fonctions de recherche

    dans un outil de gestion de contenu Rubedo, la première solution CMS open-source tirant profit des atouts de Zend Framework et du NoSQL
  2. Introduction Julien BOURDIN }  Ingénieur Centrale Lyon }  Architecte PHP

    }  Expert Zend Framework }  Co-fondateur & Directeur Technique de WebTales Introduction Chercher dans un CMS Recherches alternatives Gestion des documents Stratégie d’indexation Q&R WebTales, éditeur de solution open-source [email protected] @Sylfraor
  3. Introduction Introduction Chercher dans un CMS Recherches alternatives Gestion des

    documents Stratégie d’indexation Q&R www.rubedo-project.org
  4. Introduction Introduction Chercher dans un CMS Recherches alternatives Gestion des

    documents Stratégie d’indexation Q&R }  Versions utilisées Pour ES –  Elasticsearch 0.9.2 –  Ruflin/Elastica 0.9.2 (bibliothèque PHP) –  Mapper Attachments Type for ElasticSearch 1.7.0 –  ICU Analysis plugin for ElasticSearch 1.10 }  Rubedo 1.3.0 –  Zend Framework, PHP 5.3+, MongoDB 2.4,…
  5. Introduction Chercher dans un CMS Recherches alternatives Gestion des documents

    Stratégie d’indexation Q&R Les CMS gèrent des Contenus structurés et classés A propos des CMS
  6. La recherche dans un CMS Introduction Chercher dans un CMS

    Recherches alternatives Gestion des documents Stratégie d’indexation Q&R }  Rechercher en plein texte sur les champs pertinents }  Manipuler des contenus hétérogènes }  Filtrer les contenus selon un ou plusieurs plans de classement }  Manipuler des contenus multilingues }  Aider à la recherche par des suggestions (autocomplétion)
  7. La recherche dans un CMS Introduction Chercher dans un CMS

    Recherches alternatives Gestion des documents Stratégie d’indexation Q&R Démo
  8. La recherche dans un CMS Introduction Chercher dans un CMS

    Recherches alternatives Gestion des documents Stratégie d’indexation Q&R }  Manipuler des types de contenus –  Il est possible de déclarer dynamiquement les types de contenus –  Chaque champ, pour le type de contenus, est déclaré recherchable –  Un type de contenu = un type Elasticsearch dans l’index des contenus –  Le type est homogène à la structure documentaire dans MongoDB
  9. La recherche dans un CMS Introduction Chercher dans un CMS

    Recherches alternatives Gestion des documents Stratégie d’indexation Q&R }  Les taxonomies –  Associées à un ou plusieurs types de contenus –  Traductibles –  Opérateur paramétrable (ou / et) }  Mis à plat dans chaque document avant indexation –  Tableau avec un champ par vocabulaire –  Chaque vocabulaire contient un tableau d’identifiants pour les mots associés }  Utilisés comme des facettes naturelles
  10. La recherche dans un CMS Introduction Chercher dans un CMS

    Recherches alternatives Gestion des documents Stratégie d’indexation Q&R }  Manipuler plusieurs langues pour un contenu –  Chaque champ peut-être « localisable » ou indépendant de la langue –  Un contenu peut être dans un nombre arbitraire de langues –  Le contenu est la somme des champs globaux et des champs traduits }  L’usage de « multi-fields » permet de gérer les cas de recherche –  Un field « all_nonlocalized » –  Un field « all_locale » par langue –  Chaque traduction d’un champ est affecté aux bons fields
  11. La recherche dans un CMS Introduction Chercher dans un CMS

    Recherches alternatives Gestion des documents Stratégie d’indexation Q&R }  2 cas de recherches avec les langues –  Monolingue : filtrage sur la présence de la langue •  all_locale, all_nonlocalized^0.1 –  Multilingue : une langue privilégiée (langue courante) •  all_locale, all_otherlocale^0.1, all_nonlocalized^0.1 }  Un analyser spécifique et des multifields pour l’autocompletion
  12. Gestion des documents Introduction Chercher dans un CMS Recherches alternatives

    Gestion des documents Stratégie d’indexation Q&R }  Définition d’un document –  Association d’un fichier à des métadonnées –  Bureautique ou média –  Indexation plein texte si possible pour les documents }  Types de document }  Utilisation de MongoDB GridFS pour le stockage }  Désactivation du stockage de la source sur Elasticsearch
  13. Gestion des documents Introduction Chercher dans un CMS Recherches alternatives

    Gestion des documents Stratégie d’indexation Q&R Démo
  14. Stratégie d’indexation Introduction Chercher dans un CMS Recherches alternatives Gestion

    des documents Stratégie d’indexation Q&R }  Déclenchement sur le CRUD MongoDB –  Indexation d’un contenu sur Create et Update –  Suppression de l’index sur Delete –  Création d’un type sur l’action de création du type de contenu –  Suppression et recréation d’un type sur la mise à jour d’un type de contenu –  Suppression sur le Delete }  Même stratégie pour les média
  15. Stratégie d’indexation Introduction Chercher dans un CMS Recherches alternatives Gestion

    des documents Stratégie d’indexation Q&R }  Temps réel pour les modifications atomiques }  Destruction et recréation des types lors de l'altération de ceux-ci }  Traitement par lots et validation en fin de tâche }  Utilisation de tâches différées }  Possibilité de reconstruire totalement l'index
  16. Stratégie d’indexation Introduction Chercher dans un CMS Recherches alternatives Gestion

    des documents Stratégie d’indexation Q&R }  Reste à faire –  Gestion de section critique dans les tâches asynchrones –  Mise à jour sur un index secondaire et bascule –  Manipulation de gros fichiers dans les indexations (PDF > 50Mo)