Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

INTRODUCTION

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

LA RECHERCHE DANS UN CMS

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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)

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

RECHERCHES ALTERNATIVES

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

GESTION DES DOCUMENTS

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

STRATÉGIE D’INDEXATION

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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)

Slide 23

Slide 23 text

QUESTIONS ET RÉPONSES