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
streami...
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 voy...
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 connaissanc...
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 =...
Analyseur standard
Analyzer = Tokenizer + TokenFilter
"analyzer" : {
"myFrenchAnalyzer" : {
"type" : "custom",
"tokenizer" : "standard",
"fil...
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 tokenfilte...
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 ...
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
dynamiqueme...
Les fields
_uid id + type
_id id
type field type du document
_source JSON passé à l’indexation
_all tous les champs
_analy...
Les types
String Objects
Integer / Long Multi Fields
Float / Double IP
Boolean Geo Point
Date Geo Shape
Null attachment
Ar...
Custom Mapping
{
"titre" : "H2G2 Le Guide du voyageur
galactique, Tome 1 Le guide
du voyageur galactique",
"auteur" : ["Do...
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
...
Objectif
Démo #3
Stay tuned
http://www.elasticsearch.org/
@ElasticsearchFR
@Dadoonet (David Pilato)
https://groups.google.
com/forum/#!foru...
Prochain SlideShare
Chargement dans…5
×

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

876 vues

Publié le

Introduction to Lucene-based search engines with ElasticSearch

Publié dans : Ingénierie
0 commentaire
1 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
876
Sur SlideShare
0
Issues des intégrations
0
Intégrations
7
Actions
Partages
0
Téléchargements
19
Commentaires
0
J’aime
1
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

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

  1. 1. Moteurs de recherche un oeil sous le capot
  2. 2. /me @Audrey_Neveu @Programatoo @Devoxx4KidsFR @
  3. 3. Un moteur de recherche pour quoi faire ?
  4. 4. 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.
  5. 5. Architecture type e-commerce Site BUs Site web
  6. 6. Apache Lucene écrit en Java, lancé en 2000
  7. 7. Elastic Search vs Solr API Scalabilité Communauté SIMPLICITE Recherche
  8. 8. 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" }'
  9. 9. Démo #1
  10. 10. Architecture type e-commerce Site BUs Site web
  11. 11. Rivers Plugin qui automatise l’indexation des documents
  12. 12. Rivers Plugin qui automatise l’indexation des documents
  13. 13. Rivers Plugin qui automatise l’indexation des documents
  14. 14. Rivers Plugin qui automatise l’indexation des documents
  15. 15. Rivers Plugin qui automatise l’indexation des documents
  16. 16. Architecture type e-commerce Site BUs Site web
  17. 17. Avant de pouvoir rechercher Un peu de config : ● les index ● les analyseurs ● le mapping Prérequis : une bonne connaissance du métier
  18. 18. Les index regroupent des documents de même nature pour faciliter leur recherche. Step 1/ J’indexe
  19. 19. Step 2/ J’analyse “L’indexation repose sur un Analyzer, qui n’est autre qu’un ensemble de Tokenizers et de TokenFilters.”
  20. 20. Les analyseurs ● Un tokenizer retourne une liste de tokens. ● Un filtre va modifier ou supprimer un token. ● Un analyzer = tokenizer + 0 … * tokenFilters.
  21. 21. Analyseur standard
  22. 22. 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_" ] } }
  23. 23. Démo #2
  24. 24. Testons l’indexation L’indexation repose sur un Analyzer, qui n’est autre qu’un ensemble de Tokenizers et de TokenFilters.
  25. 25. Standard Token Filter L’indexation repose sur un Analyzer, qui n’est autre qu’un ensemble de Tokenizers et de TokenFilters.
  26. 26. Lower Case Token Filter l’indexation repose sur un analyzer, qui n’est autre qu’un ensemble de tokenizers et de tokenfilters.
  27. 27. Elision Token Filter l’indexation repose sur un analyzer, qui n’est autre qu’un ensemble de tokenizers et de tokenfilters.
  28. 28. Stop Token Filter l’indexation repose sur un analyzer, qui n’est autre qu’un ensemble de tokenizers et de tokenfilters.
  29. 29. 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
  30. 30. 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 ...
  31. 31. 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) ...
  32. 32. Les types String Objects Integer / Long Multi Fields Float / Double IP Boolean Geo Point Date Geo Shape Null attachment Array ...
  33. 33. 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 } } } }'
  34. 34. Step 3/ Je recherche ! Où l’on va parler ... ● query ● filters ● facets ● mais aussi sort, pagination, boost, score ...
  35. 35. 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
  36. 36. Objectif
  37. 37. Démo #3
  38. 38. Stay tuned http://www.elasticsearch.org/ @ElasticsearchFR @Dadoonet (David Pilato) https://groups.google. com/forum/#!forum/elasticsearch-

×