Conférence Sesql - DjangoCong 2011
-
Upload
paris-france -
Category
Documents
-
view
1.392 -
download
13
description
Transcript of Conférence Sesql - DjangoCong 2011
SeSQL : un moteur de recherche puissant etefficace
Gaël LE MIGNOT
Bruno DUPUIS
Pilot Systems
5 avril 2011
Gaël LE MIGNOT Bruno DUPUIS Pilot Systems SeSQL : un moteur de recherche puissant et efficace
Plan
1 Introduction
2 Architecture
3 Fonctionnalités
4 Performances
5 Conclusion
Gaël LE MIGNOT Bruno DUPUIS Pilot Systems SeSQL : un moteur de recherche puissant et efficace
Introduction
Contexte original
Quotidien LibérationLibération actuellement en PHP, migration Django en coursPour le front-office comme pour le back-office
Solution précédentePropriétaire, sous Windows (TextML)Problèmes de performances et de stabilité
Volumétrie685 331 articles165 551 pagesplus de 100 000 contenus divers
Gaël LE MIGNOT Bruno DUPUIS Pilot Systems SeSQL : un moteur de recherche puissant et efficace
Architecture
Architecture
Gaël LE MIGNOT Bruno DUPUIS Pilot Systems SeSQL : un moteur de recherche puissant et efficace
Architecture initiale
FonctionnementSolution propriétaire sous WindowsUtilisée par des appels XML depuis le PHP
Schéma
Gaël LE MIGNOT Bruno DUPUIS Pilot Systems SeSQL : un moteur de recherche puissant et efficace
Architecture de la v1 de SeSQL
FonctionnementWebservice en Python purCompatible niveau API avec TextML
Schéma
Gaël LE MIGNOT Bruno DUPUIS Pilot Systems SeSQL : un moteur de recherche puissant et efficace
Architecture de la v2 de SeSQL
FonctionnementApplication DjangoNécessite PostgreSQLUtilise Q et renvoie des modèles Django
Schéma
Gaël LE MIGNOT Bruno DUPUIS Pilot Systems SeSQL : un moteur de recherche puissant et efficace
Fonctionnalités
Fonctionnalités
Gaël LE MIGNOT Bruno DUPUIS Pilot Systems SeSQL : un moteur de recherche puissant et efficace
Recherche multi-critères
Définition des indexDéfinis dans un fichier spécifique, sesql_config.pyPossibilité de définir plusieurs index (privés, publics, ...)Gestion des index composites, pouvant suivre les relationsGestion d’index fulltextes, multivalués, ...Gestion des dictionnaires (stopwords, recherche de racine,...)
Utilisation de l’objet QSupport de critères comme __containswords ou__containsexact
Support des connecteurs logiques (AND, OR, NOT)Renvoi des objets Django
Gaël LE MIGNOT Bruno DUPUIS Pilot Systems SeSQL : un moteur de recherche puissant et efficace
Recherches courtes et longues
Recherches courtesRetournent un petit nombre d’éléments (une cinquantaine)Utilisent des heuristiques pour aller très vite pour renvoyerdu contenu récentPas de décompte des résultats, ni de paginationIdéal pour des portlets, requêtes de navigation, ...
Recherches longues
Gèrent la pagination de manière stable (même si ducontenu est inséré)Décomptent le nombre exact de résultatSupportent le tri par pertinence
Gaël LE MIGNOT Bruno DUPUIS Pilot Systems SeSQL : un moteur de recherche puissant et efficace
Gestion des dépendances
UtilitéL’indexation suit les relationsPar exemple on indexe le nom de l’auteur de l’articleMais l’auteur change de nom...il faut réindexer tous les articles !
FonctionnementUne méthode à implémenter sur les modèlesEnsuite, automatiquement, les objets à réindexer sontajoutés dans une tableUn deamon les reindexe en tâche de fond
Gaël LE MIGNOT Bruno DUPUIS Pilot Systems SeSQL : un moteur de recherche puissant et efficace
À venir
Suggestions de recherches
On stock les recherches effectuéesOn garde des informations comme la date et le nombre derésultatsQuand une recherche est faite, on calcule un score à partirde tout çaEt on suggère des recherches proches.
Utilisation dans l’admin DjangoFonctionnel, mais quick and dirtyOn écrit sesql:index dans les modèles de l’adminSera bientôt intégré
Gaël LE MIGNOT Bruno DUPUIS Pilot Systems SeSQL : un moteur de recherche puissant et efficace
Performances
Performances
Gaël LE MIGNOT Bruno DUPUIS 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êtesProviennent de la prod du back-office LibérationEffectuées sur la v1 de SeSQL
TestsRequêtes séquentiellesRequêtes concurrentes, dans des threads
Gaël LE MIGNOT Bruno DUPUIS Pilot Systems SeSQL : un moteur de recherche puissant et efficace
Contexte du bench
Gaël LE MIGNOT Bruno DUPUIS Pilot Systems SeSQL : un moteur de recherche puissant et efficace
Conclusion
Conclusion
Gaël LE MIGNOT Bruno DUPUIS Pilot Systems SeSQL : un moteur de recherche puissant et efficace
Conclusion
Situation actuelleSeSQL disponible en GPL sur bitbucketUtilisé en production sur Libération (front et back)Utilisé sur d’autres projets Django
Évolutions futuresRendre le processus d’installation plus aiséGestion des suggestions de rechercheIntégration à haystack?
Gaël LE MIGNOT Bruno DUPUIS Pilot Systems SeSQL : un moteur de recherche puissant et efficace
En attendant
Remerciementsaux 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-Sahttp://contributions.pilotsystems.net/
Des questions ?
Gaël LE MIGNOT Bruno DUPUIS Pilot Systems SeSQL : un moteur de recherche puissant et efficace