SlideShare ist ein Scribd-Unternehmen logo
1 von 18
Downloaden Sie, um offline zu lesen
SeSQL : un moteur de recherche puissant et
                efficace

                                 Gaël L E M IGNOT
                                  Bruno D UPUIS
                                  Pilot Systems


                                      5 avril 2011




 Gaël L E M IGNOT Bruno D UPUIS Pilot Systems   SeSQL : un moteur de recherche puissant et efficace
Plan


  1    Introduction

  2    Architecture

  3    Fonctionnalités

  4    Performances

  5    Conclusion




       Gaël L E M IGNOT Bruno D UPUIS Pilot Systems   SeSQL : un moteur de recherche puissant et efficace
Introduction
  Contexte original
      Quotidien Libération
      Libération actuellement en PHP, migration Django en cours
      Pour le front-office comme pour le back-office

  Solution précédente
      Propriétaire, sous Windows (TextML)
      Problèmes de performances et de stabilité

  Volumétrie
      685 331 articles
      165 551 pages
      plus de 100 000 contenus divers
     Gaël L E M IGNOT Bruno D UPUIS Pilot Systems   SeSQL : un moteur de recherche puissant et efficace
Architecture




                            Architecture




     Gaël L E M IGNOT Bruno D UPUIS Pilot Systems   SeSQL : un moteur de recherche puissant et efficace
Architecture initiale

  Fonctionnement
      Solution propriétaire sous Windows
      Utilisée par des appels XML depuis le PHP

  Schéma




     Gaël L E M IGNOT Bruno D UPUIS Pilot Systems   SeSQL : un moteur de recherche puissant et efficace
Architecture de la v1 de SeSQL

  Fonctionnement
      Webservice en Python pur
      Compatible niveau API avec TextML

  Schéma




     Gaël L E M IGNOT Bruno D UPUIS Pilot Systems   SeSQL : un moteur de recherche puissant et efficace
Architecture de la v2 de SeSQL

  Fonctionnement
      Application Django
      Nécessite PostgreSQL
      Utilise Q et renvoie des modèles Django

  Schéma




     Gaël L E M IGNOT Bruno D UPUIS Pilot Systems   SeSQL : un moteur de recherche puissant et efficace
Fonctionnalités




                      Fonctionnalités




     Gaël L E M IGNOT Bruno D UPUIS Pilot Systems   SeSQL : un moteur de recherche puissant et efficace
Recherche multi-critères
  Définition des index
     Définis dans un fichier spécifique, sesql_config.py
       Possibilité de définir plusieurs index (privés, publics, ...)
       Gestion des index composites, pouvant suivre les relations
       Gestion d’index fulltextes, multivalués, ...
       Gestion des dictionnaires (stopwords, recherche de racine,
       ...)

  Utilisation de l’objet Q
       Support de critères comme __containswords ou
       __containsexact
       Support des connecteurs logiques (AND, OR, NOT)
       Renvoi des objets Django
      Gaël L E M IGNOT Bruno D UPUIS Pilot Systems   SeSQL : un moteur de recherche puissant et efficace
Recherches courtes et longues

  Recherches courtes
     Retournent un petit nombre d’éléments (une cinquantaine)
      Utilisent des heuristiques pour aller très vite pour renvoyer
      du contenu récent
      Pas de décompte des résultats, ni de pagination
      Idéal pour des portlets, requêtes de navigation, ...

  Recherches longues
      Gèrent la pagination de manière stable (même si du
      contenu est inséré)
      Décomptent le nombre exact de résultat
      Supportent le tri par pertinence

     Gaël L E M IGNOT Bruno D UPUIS Pilot Systems   SeSQL : un moteur de recherche puissant et efficace
Gestion des dépendances

  Utilité
        L’indexation suit les relations
       Par exemple on indexe le nom de l’auteur de l’article
       Mais l’auteur change de nom
       ...il faut réindexer tous les articles !

  Fonctionnement
      Une méthode à implémenter sur les modèles
       Ensuite, automatiquement, les objets à réindexer sont
       ajoutés dans une table
       Un deamon les reindexe en tâche de fond


      Gaël L E M IGNOT Bruno D UPUIS Pilot Systems   SeSQL : un moteur de recherche puissant et efficace
À venir

  Suggestions de recherches
      On stock les recherches effectuées
      On garde des informations comme la date et le nombre de
      résultats
      Quand une recherche est faite, on calcule un score à partir
      de tout ça
      Et on suggère des recherches proches.

  Utilisation dans l’admin Django
      Fonctionnel, mais quick and dirty
      On écrit sesql:index dans les modèles de l’admin
      Sera bientôt intégré

     Gaël L E M IGNOT Bruno D UPUIS Pilot Systems   SeSQL : un moteur de recherche puissant et efficace
Performances




                        Performances




    Gaël L E M IGNOT Bruno D UPUIS Pilot Systems   SeSQL : un moteur de recherche puissant et efficace
Contexte du bench


  Précautions d’usage
  There are three kind of lies : lies, damn lies and benchmarks.

  Requêtes
      Proviennent de la prod du back-office Libération
      Effectuées sur la v1 de SeSQL

  Tests
      Requêtes séquentielles
      Requêtes concurrentes, dans des threads



     Gaël L E M IGNOT Bruno D UPUIS Pilot Systems   SeSQL : un moteur de recherche puissant et efficace
Contexte du bench




    Gaël L E M IGNOT Bruno D UPUIS Pilot Systems   SeSQL : un moteur de recherche puissant et efficace
Conclusion




                             Conclusion




    Gaël L E M IGNOT Bruno D UPUIS Pilot Systems   SeSQL : un moteur de recherche puissant et efficace
Conclusion


  Situation actuelle
      SeSQL disponible en GPL sur bitbucket
      Utilisé en production sur Libération (front et back)
      Utilisé sur d’autres projets Django

  Évolutions futures
      Rendre le processus d’installation plus aisé
      Gestion des suggestions de recherche
      Intégration à haystack ?




     Gaël L E M IGNOT Bruno D UPUIS Pilot Systems   SeSQL : un moteur de recherche puissant et efficace
En attendant

  Remerciements
     aux communautés PostgreSQL, Python et Django
      à Libération de nous avoir fait confiance
      à Jérôme Petazzoni qui a contribué à la conception

  La page de pub
      Pilot Systems, société de services en logiciels libres :
      http://www.pilotsystems.net
      Slides en licence CC-By-Sa
      http://contributions.pilotsystems.net/

                                      Des questions ?

     Gaël L E M IGNOT Bruno D UPUIS Pilot Systems   SeSQL : un moteur de recherche puissant et efficace

Weitere ähnliche Inhalte

Ähnlich wie Conférence Sesql - DjangoCong 2011

Les micro orm, alternatives à entity framework
Les micro orm, alternatives à entity frameworkLes micro orm, alternatives à entity framework
Les micro orm, alternatives à entity frameworkMSDEVMTL
 
Être productif avec JHipster - Devoxx France 2017
Être productif avec JHipster - Devoxx France 2017Être productif avec JHipster - Devoxx France 2017
Être productif avec JHipster - Devoxx France 2017Julien Dubois
 
Entity framework core 2 vs micro orm performances
Entity framework core 2 vs micro orm performancesEntity framework core 2 vs micro orm performances
Entity framework core 2 vs micro orm performancesMSDEVMTL
 
Créer une IA capable de reconnaître des fleurs (ou autres)
Créer une IA capable de reconnaître des fleurs (ou autres)Créer une IA capable de reconnaître des fleurs (ou autres)
Créer une IA capable de reconnaître des fleurs (ou autres)Olivier Eeckhoutte
 
3S Encadre & Recrute [12/2017]
3S Encadre & Recrute [12/2017]3S Encadre & Recrute [12/2017]
3S Encadre & Recrute [12/2017]Asma KAROUI
 
JUG Nantes - Telosys Tools - Avril 2014
JUG Nantes - Telosys Tools - Avril 2014 JUG Nantes - Telosys Tools - Avril 2014
JUG Nantes - Telosys Tools - Avril 2014 telosys
 
Telosys tools jug-nantes-2014-v1.2
Telosys tools jug-nantes-2014-v1.2Telosys tools jug-nantes-2014-v1.2
Telosys tools jug-nantes-2014-v1.2Laurent Guérin
 
Connected Developper Ep6 (25-05-2013)
Connected Developper Ep6 (25-05-2013)Connected Developper Ep6 (25-05-2013)
Connected Developper Ep6 (25-05-2013)Badr Hakkari
 
GtugDakar AppEngine, Gwt
GtugDakar AppEngine, GwtGtugDakar AppEngine, Gwt
GtugDakar AppEngine, Gwthkairi
 
Openshift 3 & Kubernetes
Openshift 3 & KubernetesOpenshift 3 & Kubernetes
Openshift 3 & KubernetesPerfect Memory
 
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache MavenArnaud Héritier
 
Priows présentation des résultats
Priows présentation des résultats Priows présentation des résultats
Priows présentation des résultats Gilbert Paquette
 
Common features in webapi aspnetcore
Common features in webapi aspnetcoreCommon features in webapi aspnetcore
Common features in webapi aspnetcoreMSDEVMTL
 
Présentation de Django @ Orange Labs (FR)
Présentation de Django @ Orange Labs (FR)Présentation de Django @ Orange Labs (FR)
Présentation de Django @ Orange Labs (FR)Martin Latrille
 
RefCard Tests sur tous les fronts
RefCard Tests sur tous les frontsRefCard Tests sur tous les fronts
RefCard Tests sur tous les frontsOCTO Technology
 
GraphTour - Workday: Tracking activity with Neo4j (French version)
GraphTour - Workday: Tracking activity with Neo4j (French version)GraphTour - Workday: Tracking activity with Neo4j (French version)
GraphTour - Workday: Tracking activity with Neo4j (French version)Neo4j
 

Ähnlich wie Conférence Sesql - DjangoCong 2011 (20)

Les micro orm, alternatives à entity framework
Les micro orm, alternatives à entity frameworkLes micro orm, alternatives à entity framework
Les micro orm, alternatives à entity framework
 
Être productif avec JHipster - Devoxx France 2017
Être productif avec JHipster - Devoxx France 2017Être productif avec JHipster - Devoxx France 2017
Être productif avec JHipster - Devoxx France 2017
 
Entity framework core 2 vs micro orm performances
Entity framework core 2 vs micro orm performancesEntity framework core 2 vs micro orm performances
Entity framework core 2 vs micro orm performances
 
Créer une IA capable de reconnaître des fleurs (ou autres)
Créer une IA capable de reconnaître des fleurs (ou autres)Créer une IA capable de reconnaître des fleurs (ou autres)
Créer une IA capable de reconnaître des fleurs (ou autres)
 
3S Encadre & Recrute [12/2017]
3S Encadre & Recrute [12/2017]3S Encadre & Recrute [12/2017]
3S Encadre & Recrute [12/2017]
 
JUG Nantes - Telosys Tools - Avril 2014
JUG Nantes - Telosys Tools - Avril 2014 JUG Nantes - Telosys Tools - Avril 2014
JUG Nantes - Telosys Tools - Avril 2014
 
Telosys tools jug-nantes-2014-v1.2
Telosys tools jug-nantes-2014-v1.2Telosys tools jug-nantes-2014-v1.2
Telosys tools jug-nantes-2014-v1.2
 
Ansible-cours .pdf
Ansible-cours .pdfAnsible-cours .pdf
Ansible-cours .pdf
 
Connected Developper Ep6 (25-05-2013)
Connected Developper Ep6 (25-05-2013)Connected Developper Ep6 (25-05-2013)
Connected Developper Ep6 (25-05-2013)
 
GtugDakar AppEngine, Gwt
GtugDakar AppEngine, GwtGtugDakar AppEngine, Gwt
GtugDakar AppEngine, Gwt
 
Openshift 3 & Kubernetes
Openshift 3 & KubernetesOpenshift 3 & Kubernetes
Openshift 3 & Kubernetes
 
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
 
Priows présentation des résultats
Priows présentation des résultats Priows présentation des résultats
Priows présentation des résultats
 
Common features in webapi aspnetcore
Common features in webapi aspnetcoreCommon features in webapi aspnetcore
Common features in webapi aspnetcore
 
Javavs net
Javavs netJavavs net
Javavs net
 
Présentation de Django @ Orange Labs (FR)
Présentation de Django @ Orange Labs (FR)Présentation de Django @ Orange Labs (FR)
Présentation de Django @ Orange Labs (FR)
 
RefCard Tests sur tous les fronts
RefCard Tests sur tous les frontsRefCard Tests sur tous les fronts
RefCard Tests sur tous les fronts
 
GraphTour - Workday: Tracking activity with Neo4j (French version)
GraphTour - Workday: Tracking activity with Neo4j (French version)GraphTour - Workday: Tracking activity with Neo4j (French version)
GraphTour - Workday: Tracking activity with Neo4j (French version)
 
graylog.pptx
graylog.pptxgraylog.pptx
graylog.pptx
 
Spring Boot RestApi.pptx
Spring Boot RestApi.pptxSpring Boot RestApi.pptx
Spring Boot RestApi.pptx
 

Mehr von Paris, France

Plone Conference 2008 Lightning Talk Static Zope Rpx
Plone Conference 2008 Lightning Talk Static Zope RpxPlone Conference 2008 Lightning Talk Static Zope Rpx
Plone Conference 2008 Lightning Talk Static Zope RpxParis, France
 
Neoppod, discloses first open source transactional NoSQL Object database for ...
Neoppod, discloses first open source transactional NoSQL Object database for ...Neoppod, discloses first open source transactional NoSQL Object database for ...
Neoppod, discloses first open source transactional NoSQL Object database for ...Paris, France
 
Cockpit, gestion de contacts et d'emailing
Cockpit, gestion de contacts et d'emailingCockpit, gestion de contacts et d'emailing
Cockpit, gestion de contacts et d'emailingParis, France
 
Plone, du site web à la gestion documentaire
Plone, du site web à la gestion documentairePlone, du site web à la gestion documentaire
Plone, du site web à la gestion documentaireParis, France
 
Les critères de choix d'un intranet
Les critères de choix d'un intranetLes critères de choix d'un intranet
Les critères de choix d'un intranetParis, France
 
Partenariat Exo Platform/Pilot Systems
Partenariat Exo Platform/Pilot SystemsPartenariat Exo Platform/Pilot Systems
Partenariat Exo Platform/Pilot SystemsParis, France
 
Open World Forum 2009 Synthesis
Open World Forum 2009 SynthesisOpen World Forum 2009 Synthesis
Open World Forum 2009 SynthesisParis, France
 
Open World Forum 2009 Presentation
Open World Forum 2009 PresentationOpen World Forum 2009 Presentation
Open World Forum 2009 PresentationParis, France
 
Deliverance, la puissance de la gestion de contenu Plone appliquee aux themes...
Deliverance, la puissance de la gestion de contenu Plone appliquee aux themes...Deliverance, la puissance de la gestion de contenu Plone appliquee aux themes...
Deliverance, la puissance de la gestion de contenu Plone appliquee aux themes...Paris, France
 
Deploiement de Plone et Deliverance avec Ubuntu VM Builder
Deploiement de Plone et Deliverance avec Ubuntu VM BuilderDeploiement de Plone et Deliverance avec Ubuntu VM Builder
Deploiement de Plone et Deliverance avec Ubuntu VM BuilderParis, France
 
Deliverance, la puissance de la gestion de contenu Plone appliquée aux thèmes...
Deliverance, la puissance de la gestion de contenu Plone appliquée aux thèmes...Deliverance, la puissance de la gestion de contenu Plone appliquée aux thèmes...
Deliverance, la puissance de la gestion de contenu Plone appliquée aux thèmes...Paris, France
 
Construire un module enfichable (pluggable) et dynamique pour Plone
Construire un module enfichable (pluggable) et dynamique pour PloneConstruire un module enfichable (pluggable) et dynamique pour Plone
Construire un module enfichable (pluggable) et dynamique pour PloneParis, France
 
La virtualisation dans le Datacenter
La virtualisation dans le DatacenterLa virtualisation dans le Datacenter
La virtualisation dans le DatacenterParis, France
 
Guide pratique des logiciels libres dans les administrations
Guide pratique des logiciels libres dans les administrationsGuide pratique des logiciels libres dans les administrations
Guide pratique des logiciels libres dans les administrationsParis, France
 
Pilot Systems développe l'intranet Plone de l'ENA
Pilot Systems développe l'intranet Plone de l'ENAPilot Systems développe l'intranet Plone de l'ENA
Pilot Systems développe l'intranet Plone de l'ENAParis, France
 
Open Source et Cloud Computing
Open Source et Cloud ComputingOpen Source et Cloud Computing
Open Source et Cloud ComputingParis, France
 
V12N avec Xen et IBM BladeCenter
V12N avec Xen et IBM BladeCenterV12N avec Xen et IBM BladeCenter
V12N avec Xen et IBM BladeCenterParis, France
 
Comment le logiciel libre commence à s'imposer en France conférence erp2008
Comment le logiciel libre commence à s'imposer en France conférence erp2008Comment le logiciel libre commence à s'imposer en France conférence erp2008
Comment le logiciel libre commence à s'imposer en France conférence erp2008Paris, France
 
Le poste de travail sous Linux
Le poste de travail sous LinuxLe poste de travail sous Linux
Le poste de travail sous LinuxParis, France
 
Web 2.0 : l'impact sur la transformation de l'entreprise
Web 2.0 : l'impact sur la transformation de l'entrepriseWeb 2.0 : l'impact sur la transformation de l'entreprise
Web 2.0 : l'impact sur la transformation de l'entrepriseParis, France
 

Mehr von Paris, France (20)

Plone Conference 2008 Lightning Talk Static Zope Rpx
Plone Conference 2008 Lightning Talk Static Zope RpxPlone Conference 2008 Lightning Talk Static Zope Rpx
Plone Conference 2008 Lightning Talk Static Zope Rpx
 
Neoppod, discloses first open source transactional NoSQL Object database for ...
Neoppod, discloses first open source transactional NoSQL Object database for ...Neoppod, discloses first open source transactional NoSQL Object database for ...
Neoppod, discloses first open source transactional NoSQL Object database for ...
 
Cockpit, gestion de contacts et d'emailing
Cockpit, gestion de contacts et d'emailingCockpit, gestion de contacts et d'emailing
Cockpit, gestion de contacts et d'emailing
 
Plone, du site web à la gestion documentaire
Plone, du site web à la gestion documentairePlone, du site web à la gestion documentaire
Plone, du site web à la gestion documentaire
 
Les critères de choix d'un intranet
Les critères de choix d'un intranetLes critères de choix d'un intranet
Les critères de choix d'un intranet
 
Partenariat Exo Platform/Pilot Systems
Partenariat Exo Platform/Pilot SystemsPartenariat Exo Platform/Pilot Systems
Partenariat Exo Platform/Pilot Systems
 
Open World Forum 2009 Synthesis
Open World Forum 2009 SynthesisOpen World Forum 2009 Synthesis
Open World Forum 2009 Synthesis
 
Open World Forum 2009 Presentation
Open World Forum 2009 PresentationOpen World Forum 2009 Presentation
Open World Forum 2009 Presentation
 
Deliverance, la puissance de la gestion de contenu Plone appliquee aux themes...
Deliverance, la puissance de la gestion de contenu Plone appliquee aux themes...Deliverance, la puissance de la gestion de contenu Plone appliquee aux themes...
Deliverance, la puissance de la gestion de contenu Plone appliquee aux themes...
 
Deploiement de Plone et Deliverance avec Ubuntu VM Builder
Deploiement de Plone et Deliverance avec Ubuntu VM BuilderDeploiement de Plone et Deliverance avec Ubuntu VM Builder
Deploiement de Plone et Deliverance avec Ubuntu VM Builder
 
Deliverance, la puissance de la gestion de contenu Plone appliquée aux thèmes...
Deliverance, la puissance de la gestion de contenu Plone appliquée aux thèmes...Deliverance, la puissance de la gestion de contenu Plone appliquée aux thèmes...
Deliverance, la puissance de la gestion de contenu Plone appliquée aux thèmes...
 
Construire un module enfichable (pluggable) et dynamique pour Plone
Construire un module enfichable (pluggable) et dynamique pour PloneConstruire un module enfichable (pluggable) et dynamique pour Plone
Construire un module enfichable (pluggable) et dynamique pour Plone
 
La virtualisation dans le Datacenter
La virtualisation dans le DatacenterLa virtualisation dans le Datacenter
La virtualisation dans le Datacenter
 
Guide pratique des logiciels libres dans les administrations
Guide pratique des logiciels libres dans les administrationsGuide pratique des logiciels libres dans les administrations
Guide pratique des logiciels libres dans les administrations
 
Pilot Systems développe l'intranet Plone de l'ENA
Pilot Systems développe l'intranet Plone de l'ENAPilot Systems développe l'intranet Plone de l'ENA
Pilot Systems développe l'intranet Plone de l'ENA
 
Open Source et Cloud Computing
Open Source et Cloud ComputingOpen Source et Cloud Computing
Open Source et Cloud Computing
 
V12N avec Xen et IBM BladeCenter
V12N avec Xen et IBM BladeCenterV12N avec Xen et IBM BladeCenter
V12N avec Xen et IBM BladeCenter
 
Comment le logiciel libre commence à s'imposer en France conférence erp2008
Comment le logiciel libre commence à s'imposer en France conférence erp2008Comment le logiciel libre commence à s'imposer en France conférence erp2008
Comment le logiciel libre commence à s'imposer en France conférence erp2008
 
Le poste de travail sous Linux
Le poste de travail sous LinuxLe poste de travail sous Linux
Le poste de travail sous Linux
 
Web 2.0 : l'impact sur la transformation de l'entreprise
Web 2.0 : l'impact sur la transformation de l'entrepriseWeb 2.0 : l'impact sur la transformation de l'entreprise
Web 2.0 : l'impact sur la transformation de l'entreprise
 

Conférence Sesql - DjangoCong 2011

  • 1. SeSQL : un moteur de recherche puissant et efficace Gaël L E M IGNOT Bruno D UPUIS Pilot Systems 5 avril 2011 Gaël L E M IGNOT Bruno D UPUIS Pilot Systems SeSQL : un moteur de recherche puissant et efficace
  • 2. Plan 1 Introduction 2 Architecture 3 Fonctionnalités 4 Performances 5 Conclusion Gaël L E M IGNOT Bruno D UPUIS Pilot Systems SeSQL : un moteur de recherche puissant et efficace
  • 3. Introduction Contexte original Quotidien Libération Libération actuellement en PHP, migration Django en cours Pour le front-office comme pour le back-office Solution précédente Propriétaire, sous Windows (TextML) Problèmes de performances et de stabilité Volumétrie 685 331 articles 165 551 pages plus de 100 000 contenus divers Gaël L E M IGNOT Bruno D UPUIS Pilot Systems SeSQL : un moteur de recherche puissant et efficace
  • 4. Architecture Architecture Gaël L E M IGNOT Bruno D UPUIS Pilot Systems SeSQL : un moteur de recherche puissant et efficace
  • 5. Architecture initiale Fonctionnement Solution propriétaire sous Windows Utilisée par des appels XML depuis le PHP Schéma Gaël L E M IGNOT Bruno D UPUIS Pilot Systems SeSQL : un moteur de recherche puissant et efficace
  • 6. Architecture de la v1 de SeSQL Fonctionnement Webservice en Python pur Compatible niveau API avec TextML Schéma Gaël L E M IGNOT Bruno D UPUIS Pilot Systems SeSQL : un moteur de recherche puissant et efficace
  • 7. Architecture de la v2 de SeSQL Fonctionnement Application Django Nécessite PostgreSQL Utilise Q et renvoie des modèles Django Schéma Gaël L E M IGNOT Bruno D UPUIS Pilot Systems SeSQL : un moteur de recherche puissant et efficace
  • 8. Fonctionnalités Fonctionnalités Gaël L E M IGNOT Bruno D UPUIS Pilot Systems SeSQL : un moteur de recherche puissant et efficace
  • 9. Recherche multi-critères Définition des index Définis dans un fichier spécifique, sesql_config.py Possibilité de définir plusieurs index (privés, publics, ...) Gestion des index composites, pouvant suivre les relations Gestion d’index fulltextes, multivalués, ... Gestion des dictionnaires (stopwords, recherche de racine, ...) Utilisation de l’objet Q Support de critères comme __containswords ou __containsexact Support des connecteurs logiques (AND, OR, NOT) Renvoi des objets Django Gaël L E M IGNOT Bruno D UPUIS Pilot Systems SeSQL : un moteur de recherche puissant et efficace
  • 10. Recherches courtes et longues Recherches courtes Retournent un petit nombre d’éléments (une cinquantaine) Utilisent des heuristiques pour aller très vite pour renvoyer du contenu récent Pas de décompte des résultats, ni de pagination Idéal pour des portlets, requêtes de navigation, ... Recherches longues Gèrent la pagination de manière stable (même si du contenu est inséré) Décomptent le nombre exact de résultat Supportent le tri par pertinence Gaël L E M IGNOT Bruno D UPUIS Pilot Systems SeSQL : un moteur de recherche puissant et efficace
  • 11. Gestion des dépendances Utilité L’indexation suit les relations Par exemple on indexe le nom de l’auteur de l’article Mais l’auteur change de nom ...il faut réindexer tous les articles ! Fonctionnement Une méthode à implémenter sur les modèles Ensuite, automatiquement, les objets à réindexer sont ajoutés dans une table Un deamon les reindexe en tâche de fond Gaël L E M IGNOT Bruno D UPUIS Pilot Systems SeSQL : un moteur de recherche puissant et efficace
  • 12. À venir Suggestions de recherches On stock les recherches effectuées On garde des informations comme la date et le nombre de résultats Quand une recherche est faite, on calcule un score à partir de tout ça Et on suggère des recherches proches. Utilisation dans l’admin Django Fonctionnel, mais quick and dirty On écrit sesql:index dans les modèles de l’admin Sera bientôt intégré Gaël L E M IGNOT Bruno D UPUIS Pilot Systems SeSQL : un moteur de recherche puissant et efficace
  • 13. Performances Performances Gaël L E M IGNOT Bruno D UPUIS Pilot Systems SeSQL : un moteur de recherche puissant et efficace
  • 14. Contexte du bench Précautions d’usage There are three kind of lies : lies, damn lies and benchmarks. Requêtes Proviennent de la prod du back-office Libération Effectuées sur la v1 de SeSQL Tests Requêtes séquentielles Requêtes concurrentes, dans des threads Gaël L E M IGNOT Bruno D UPUIS Pilot Systems SeSQL : un moteur de recherche puissant et efficace
  • 15. Contexte du bench Gaël L E M IGNOT Bruno D UPUIS Pilot Systems SeSQL : un moteur de recherche puissant et efficace
  • 16. Conclusion Conclusion Gaël L E M IGNOT Bruno D UPUIS Pilot Systems SeSQL : un moteur de recherche puissant et efficace
  • 17. Conclusion Situation actuelle SeSQL disponible en GPL sur bitbucket Utilisé en production sur Libération (front et back) Utilisé sur d’autres projets Django Évolutions futures Rendre le processus d’installation plus aisé Gestion des suggestions de recherche Intégration à haystack ? Gaël L E M IGNOT Bruno D UPUIS Pilot Systems SeSQL : un moteur de recherche puissant et efficace
  • 18. En attendant Remerciements aux communautés PostgreSQL, Python et Django à Libération de nous avoir fait confiance à Jérôme Petazzoni qui a contribué à la conception La page de pub Pilot Systems, société de services en logiciels libres : http://www.pilotsystems.net Slides en licence CC-By-Sa http://contributions.pilotsystems.net/ Des questions ? Gaël L E M IGNOT Bruno D UPUIS Pilot Systems SeSQL : un moteur de recherche puissant et efficace