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

1,024 views

Published on

Introduction to Lucene-based search engines with ElasticSearch

Published in: Engineering
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,024
On SlideShare
0
From Embeds
0
Number of Embeds
8
Actions
Shares
0
Downloads
23
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

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-

×