SlideShare a Scribd company logo
1 of 38
Download to read offline
Moteurs de recherche
un oeil sous le capot
/me
@Audrey_Neveu
@Programatoo
@Devoxx4KidsFR
@
Un moteur de recherche
pour quoi faire ?
Un moteur de recherche
pour quoi faire ?
● cas d’école : site de e-commerce
● mais aussi réseaux sociaux, sites de
streaming … sites à “contenus”.
● pour apporter de la recherche “Google like”
à nos utilisateurs de SI.
Architecture type e-commerce
Site BUs Site web
Apache Lucene
écrit en Java, lancé en 2000
Elastic Search vs Solr
API Scalabilité Communauté
SIMPLICITE
Recherche
Use Case
Magasin de livres en ligne.
curl -XPUT 'http://localhost:9200/store/book/1' -d
'{
"titre" : "H2G2 Le Guide du voyageur galactique, Tome 1 Le guide du voyageur galactique",
"auteur" : ["Douglas Adams"],
"editeur" : "Gallimard",
"genre" : "Science-Fiction",
"ISBN" : "2070437434",
"date de parution" : "11/03/2010",
"prix" : "6.27"
}'
Démo #1
Architecture type e-commerce
Site BUs Site web
Rivers
Plugin qui automatise l’indexation des documents
Rivers
Plugin qui automatise l’indexation des documents
Rivers
Plugin qui automatise l’indexation des documents
Rivers
Plugin qui automatise l’indexation des documents
Rivers
Plugin qui automatise l’indexation des documents
Architecture type e-commerce
Site BUs Site web
Avant de pouvoir rechercher
Un peu de config :
● les index
● les analyseurs
● le mapping
Prérequis : une bonne connaissance du métier
Les index regroupent des documents de même
nature pour faciliter leur recherche.
Step 1/ J’indexe
Step 2/ J’analyse
“L’indexation repose sur un Analyzer,
qui n’est autre qu’un ensemble
de Tokenizers
et de TokenFilters.”
Les analyseurs
● Un tokenizer retourne une liste de tokens.
● Un filtre va modifier ou supprimer un token.
● Un analyzer = tokenizer + 0 … *
tokenFilters.
Analyseur standard
Analyzer = Tokenizer + TokenFilter
"analyzer" : {
"myFrenchAnalyzer" : {
"type" : "custom",
"tokenizer" : "standard",
"filter" : [ "lowercase", "elision", "frenchStopWord" ]
}
},
"filter" : {
"elision" : {
"type" : "elision",
"articles" : [ "l" , "j" , "d" , "m" , "n" , "s" , "c" , "qu" , "t" ]
} ,
"frenchStopWord" : {
"type" : "stop",
"stopwords" : [ "_french_" ]
}
}
Démo #2
Testons l’indexation
L’indexation repose sur un Analyzer,
qui n’est autre qu’un ensemble
de Tokenizers
et de TokenFilters.
Standard Token Filter
L’indexation repose sur un Analyzer,
qui n’est autre qu’un ensemble
de Tokenizers
et de TokenFilters.
Lower Case Token Filter
l’indexation repose sur un analyzer,
qui n’est autre qu’un ensemble
de tokenizers
et de tokenfilters.
Elision Token Filter
l’indexation repose sur un analyzer,
qui n’est autre qu’un ensemble
de tokenizers
et de tokenfilters.
Stop Token Filter
l’indexation repose sur un analyzer,
qui n’est autre qu’un ensemble
de tokenizers
et de tokenfilters.
Résultat
L’indexation repose sur un Analyzer, qui n’est autre qu’un
ensemble de Tokenizers et de TokenFilters.
indexation repose analyzer autre ensemble tokenizers
tokenfilters
Le mapping
● Le mapping définit la façon dont les fields
seront indexés.
● Le mapping par défaut d’ES va gérer
dynamiquement tous les types.
● Mais il peut parfois être utile de définir soi
même le mapping ...
Les fields
_uid id + type
_id id
type field type du document
_source JSON passé à l’indexation
_all tous les champs
_analyzer l’analyseur à utiliser pour indexer le document
_ttl date d’expiration (time to live)
...
Les types
String Objects
Integer / Long Multi Fields
Float / Double IP
Boolean Geo Point
Date Geo Shape
Null attachment
Array ...
Custom Mapping
{
"titre" : "H2G2 Le Guide du voyageur
galactique, Tome 1 Le guide
du voyageur galactique",
"auteur" : ["Douglas Adams"],
"editeur" : "Gallimard",
"genre" : "Science-Fiction",
"ISBN" : "2070437434",
"date de parution" : "11/03/2010",
"prix” : "6.27"
}
curl -XPUT 'http://localhost:9200/store/book/_mapping'
-d '{
"book" : {
"properties" : {
"genre" : {
"type" : "string",
"analyzer" : "keyword"
},
"_source" : {
"enabled" : false
}
}
}
}'
Step 3/ Je recherche !
Où l’on va parler ...
● query
● filters
● facets
● mais aussi sort, pagination, boost, score ...
Contenu de l’index
science fiction
fantasy
jeunesse
Livres
Comics
aventure
fantasy
Auteurs
YX Z
Y
Y
X
X
X
Y
Y
Y
X
X
Z
Y
Y
Y
X
X
X
X
X
X
X
X
X
X
X
X
X
X
Z
Z
Z
Z
Objectif
Démo #3
Stay tuned
http://www.elasticsearch.org/
@ElasticsearchFR
@Dadoonet (David Pilato)
https://groups.google.
com/forum/#!forum/elasticsearch-

More Related Content

What's hot

Présentation spring data Matthieu Briend
Présentation spring data  Matthieu BriendPrésentation spring data  Matthieu Briend
Présentation spring data Matthieu Briend
SOAT
 

What's hot (20)

Présentation de ElasticSearch / Digital apéro du 12/11/2014
Présentation de ElasticSearch / Digital apéro du 12/11/2014Présentation de ElasticSearch / Digital apéro du 12/11/2014
Présentation de ElasticSearch / Digital apéro du 12/11/2014
 
Finist JUG - Elasticsearch
Finist JUG - ElasticsearchFinist JUG - Elasticsearch
Finist JUG - Elasticsearch
 
Hands on lab Elasticsearch
Hands on lab ElasticsearchHands on lab Elasticsearch
Hands on lab Elasticsearch
 
Poitou charentes JUG - Elasticsearch
Poitou charentes JUG - ElasticsearchPoitou charentes JUG - Elasticsearch
Poitou charentes JUG - Elasticsearch
 
Elastic serach
Elastic serachElastic serach
Elastic serach
 
Besoin de rien Envie de Search - Presentation Lucene Solr ElasticSearch
Besoin de rien Envie de Search - Presentation Lucene Solr ElasticSearchBesoin de rien Envie de Search - Presentation Lucene Solr ElasticSearch
Besoin de rien Envie de Search - Presentation Lucene Solr ElasticSearch
 
Tirer le meilleur de ses données avec ElasticSearch
Tirer le meilleur de ses données avec ElasticSearchTirer le meilleur de ses données avec ElasticSearch
Tirer le meilleur de ses données avec ElasticSearch
 
Solr and Elasticsearch in Action (at Breizhcamp)
Solr and Elasticsearch in Action (at Breizhcamp)Solr and Elasticsearch in Action (at Breizhcamp)
Solr and Elasticsearch in Action (at Breizhcamp)
 
Tunis big data_meetup__21_nov2015__aymenzaafouri
Tunis big data_meetup__21_nov2015__aymenzaafouriTunis big data_meetup__21_nov2015__aymenzaafouri
Tunis big data_meetup__21_nov2015__aymenzaafouri
 
[Breizhcamp 2015] MongoDB et Elastic, meilleurs ennemis ?
[Breizhcamp 2015] MongoDB et Elastic, meilleurs ennemis ?[Breizhcamp 2015] MongoDB et Elastic, meilleurs ennemis ?
[Breizhcamp 2015] MongoDB et Elastic, meilleurs ennemis ?
 
Découverte de Elastic search
Découverte de Elastic searchDécouverte de Elastic search
Découverte de Elastic search
 
Lausanne JUG - Elasticsearch
Lausanne JUG - ElasticsearchLausanne JUG - Elasticsearch
Lausanne JUG - Elasticsearch
 
Paris data geek - Elasticsearch
Paris data geek - ElasticsearchParis data geek - Elasticsearch
Paris data geek - Elasticsearch
 
Breizhcamp 2015 - Comment (ne pas réussir à) modéliser ses data dans elastics...
Breizhcamp 2015 - Comment (ne pas réussir à) modéliser ses data dans elastics...Breizhcamp 2015 - Comment (ne pas réussir à) modéliser ses data dans elastics...
Breizhcamp 2015 - Comment (ne pas réussir à) modéliser ses data dans elastics...
 
Elasticsearch - Esme sudria
Elasticsearch - Esme sudriaElasticsearch - Esme sudria
Elasticsearch - Esme sudria
 
Fondamentaux d’une API REST
Fondamentaux d’une API RESTFondamentaux d’une API REST
Fondamentaux d’une API REST
 
Tout ce que le getting started mongo db ne vous dira pas
Tout ce que le getting started mongo db ne vous dira pasTout ce que le getting started mongo db ne vous dira pas
Tout ce que le getting started mongo db ne vous dira pas
 
Java Content Repository avec Jackrabbit
Java Content Repository avec JackrabbitJava Content Repository avec Jackrabbit
Java Content Repository avec Jackrabbit
 
Solr, c'est simple et Big Data ready - prez au Lyon jug Fév 2014
Solr, c'est simple et Big Data ready - prez au Lyon jug Fév 2014Solr, c'est simple et Big Data ready - prez au Lyon jug Fév 2014
Solr, c'est simple et Big Data ready - prez au Lyon jug Fév 2014
 
Présentation spring data Matthieu Briend
Présentation spring data  Matthieu BriendPrésentation spring data  Matthieu Briend
Présentation spring data Matthieu Briend
 

Viewers also liked

How to make a simple cheap high availability self-healing solr cluster
How to make a simple cheap high availability self-healing solr clusterHow to make a simple cheap high availability self-healing solr cluster
How to make a simple cheap high availability self-healing solr cluster
lucenerevolution
 

Viewers also liked (8)

Getting started with docker
Getting started with dockerGetting started with docker
Getting started with docker
 
Ionic, le framework mobile hybride carrément addictif - Devoxx France 2016
Ionic, le framework mobile hybride carrément addictif - Devoxx France 2016Ionic, le framework mobile hybride carrément addictif - Devoxx France 2016
Ionic, le framework mobile hybride carrément addictif - Devoxx France 2016
 
How to make a simple cheap high availability self-healing solr cluster
How to make a simple cheap high availability self-healing solr clusterHow to make a simple cheap high availability self-healing solr cluster
How to make a simple cheap high availability self-healing solr cluster
 
Elasticsearch quick Intro (English)
Elasticsearch quick Intro (English)Elasticsearch quick Intro (English)
Elasticsearch quick Intro (English)
 
The end of polling : why and how to transform a REST API into a Data Streamin...
The end of polling : why and how to transform a REST API into a Data Streamin...The end of polling : why and how to transform a REST API into a Data Streamin...
The end of polling : why and how to transform a REST API into a Data Streamin...
 
The end of polling (Audrey Neveu)
The end of polling (Audrey Neveu)The end of polling (Audrey Neveu)
The end of polling (Audrey Neveu)
 
Search API - Google Cloud Platform
Search API - Google Cloud PlatformSearch API - Google Cloud Platform
Search API - Google Cloud Platform
 
Solr + Hadoop - Fouillez facilement dans votre système Big Data
Solr + Hadoop - Fouillez facilement dans votre système Big DataSolr + Hadoop - Fouillez facilement dans votre système Big Data
Solr + Hadoop - Fouillez facilement dans votre système Big Data
 

Similar to Moteurs de recherche : un oeil sous le capot avec Elastic Search

Développement d'un moteur de recherche avec Zend Search
Développement d'un moteur de recherche avec Zend SearchDéveloppement d'un moteur de recherche avec Zend Search
Développement d'un moteur de recherche avec Zend Search
Robert Viseur
 
No sql, au-delà du buzz
No sql, au-delà du buzzNo sql, au-delà du buzz
No sql, au-delà du buzz
naholyr
 

Similar to Moteurs de recherche : un oeil sous le capot avec Elastic Search (20)

Lyon JUG - Elasticsearch
Lyon JUG - ElasticsearchLyon JUG - Elasticsearch
Lyon JUG - Elasticsearch
 
Oxalide Academy : Workshop #3 Elastic Search
Oxalide Academy : Workshop #3 Elastic SearchOxalide Academy : Workshop #3 Elastic Search
Oxalide Academy : Workshop #3 Elastic Search
 
Elasticsearch - OSDC France 2012
Elasticsearch - OSDC France 2012Elasticsearch - OSDC France 2012
Elasticsearch - OSDC France 2012
 
Presentation Lucene / Solr / Datafari - Nantes JUG
Presentation Lucene / Solr / Datafari - Nantes JUGPresentation Lucene / Solr / Datafari - Nantes JUG
Presentation Lucene / Solr / Datafari - Nantes JUG
 
Classification de courriers postaux avec elasticsearch
Classification de courriers postaux avec elasticsearchClassification de courriers postaux avec elasticsearch
Classification de courriers postaux avec elasticsearch
 
Initiation à la fouille de texte - formation AJPro
Initiation à la fouille de texte - formation AJProInitiation à la fouille de texte - formation AJPro
Initiation à la fouille de texte - formation AJPro
 
Geneva jug Lucene Solr
Geneva jug Lucene Solr Geneva jug Lucene Solr
Geneva jug Lucene Solr
 
le web sémantique : un web de métadonnées
le web sémantique : un web de métadonnéesle web sémantique : un web de métadonnées
le web sémantique : un web de métadonnées
 
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)
 
Développement d'un moteur de recherche avec Zend Search
Développement d'un moteur de recherche avec Zend SearchDéveloppement d'un moteur de recherche avec Zend Search
Développement d'un moteur de recherche avec Zend Search
 
No sql, au-delà du buzz
No sql, au-delà du buzzNo sql, au-delà du buzz
No sql, au-delà du buzz
 
Optimisez vos Recherches, Formez-vous sur Expernova !
Optimisez vos Recherches, Formez-vous sur Expernova !Optimisez vos Recherches, Formez-vous sur Expernova !
Optimisez vos Recherches, Formez-vous sur Expernova !
 
Lucene - 10 ans d'usages plus ou moins classiques
Lucene - 10 ans d'usages plus ou moins classiquesLucene - 10 ans d'usages plus ou moins classiques
Lucene - 10 ans d'usages plus ou moins classiques
 
Topic modeling of Twitter followers - Paris Machine Learning meetup - Alex Pe...
Topic modeling of Twitter followers - Paris Machine Learning meetup - Alex Pe...Topic modeling of Twitter followers - Paris Machine Learning meetup - Alex Pe...
Topic modeling of Twitter followers - Paris Machine Learning meetup - Alex Pe...
 
Marseille JUG Novembre 2013 Lucene Solr France Labs
Marseille JUG Novembre 2013 Lucene Solr France LabsMarseille JUG Novembre 2013 Lucene Solr France Labs
Marseille JUG Novembre 2013 Lucene Solr France Labs
 
Enrichissement des moteurs de recherche: technologie
Enrichissement des moteurs de recherche: technologieEnrichissement des moteurs de recherche: technologie
Enrichissement des moteurs de recherche: technologie
 
Offre Search
Offre SearchOffre Search
Offre Search
 
Génération automatique de texte
Génération automatique de texteGénération automatique de texte
Génération automatique de texte
 
Show de boucane pour ELK
Show de boucane pour ELKShow de boucane pour ELK
Show de boucane pour ELK
 
Comment les plateformes de Data Science métamorphosent le SEO ?
Comment les plateformes de Data Science métamorphosent le SEO ?Comment les plateformes de Data Science métamorphosent le SEO ?
Comment les plateformes de Data Science métamorphosent le SEO ?
 

Recently uploaded

conception d'un batiment r+4 comparative de defferente ariante de plancher
conception d'un  batiment  r+4 comparative de defferente ariante de plancherconception d'un  batiment  r+4 comparative de defferente ariante de plancher
conception d'un batiment r+4 comparative de defferente ariante de plancher
mansouriahlam
 

Recently uploaded (7)

Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024
Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024
Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024
 
JTC 2024 Bâtiment et Photovoltaïque.pdf
JTC 2024  Bâtiment et Photovoltaïque.pdfJTC 2024  Bâtiment et Photovoltaïque.pdf
JTC 2024 Bâtiment et Photovoltaïque.pdf
 
Algo II: les files cours + exercices corrigés
Algo II: les files cours + exercices corrigésAlgo II: les files cours + exercices corrigés
Algo II: les files cours + exercices corrigés
 
conception d'un batiment r+4 comparative de defferente ariante de plancher
conception d'un  batiment  r+4 comparative de defferente ariante de plancherconception d'un  batiment  r+4 comparative de defferente ariante de plancher
conception d'un batiment r+4 comparative de defferente ariante de plancher
 
firefly algoriyhm sac a dos step by step .pdf
firefly algoriyhm sac a dos step by step .pdffirefly algoriyhm sac a dos step by step .pdf
firefly algoriyhm sac a dos step by step .pdf
 
comprehension de DDMRP dans le domaine de gestion
comprehension de DDMRP dans le domaine de gestioncomprehension de DDMRP dans le domaine de gestion
comprehension de DDMRP dans le domaine de gestion
 
optimisation logistique MLT_231102_155827.pdf
optimisation logistique  MLT_231102_155827.pdfoptimisation logistique  MLT_231102_155827.pdf
optimisation logistique MLT_231102_155827.pdf
 

Moteurs de recherche : un oeil sous le capot avec Elastic Search