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

    View full-size slide

  2. INTRODUCTION

    View full-size slide

  3. 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

    View full-size slide

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

    View full-size slide

  5. 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,…

    View full-size slide

  6. LA RECHERCHE DANS UN CMS

    View full-size slide

  7. 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

    View full-size slide

  8. 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)

    View full-size slide

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

    View full-size slide

  10. 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

    View full-size slide

  11. 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

    View full-size slide

  12. 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

    View full-size slide

  13. 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

    View full-size slide

  14. RECHERCHES ALTERNATIVES

    View full-size slide

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

    View full-size slide

  16. GESTION DES DOCUMENTS

    View full-size slide

  17. 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

    View full-size slide

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

    View full-size slide

  19. STRATÉGIE D’INDEXATION

    View full-size slide

  20. 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

    View full-size slide

  21. 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

    View full-size slide

  22. 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)

    View full-size slide

  23. QUESTIONS ET RÉPONSES

    View full-size slide