Présentation Apache Solr 12 Août 2011 Thibaud Vibes
Sommaire <ul><li>Présentation du projet
Les fonctionnalités de Solr </li></ul><ul><li>De base
Fonctionnalités coeur
Tunning </li></ul><ul><li>Questions?
Cas d'école (si on a le temps) </li></ul>
Présentation de Solr
Présentation du projet <ul><li>Se prononce  SOL A R
Basé sur  Lucene
Vocation  : Fournir une solution de recherche avec indexation  full text  pour  l'entreprise </li></ul><ul><li>Personnalis...
Sans avoir à produire de code
Prise en charge de gros volumes
Sources multiples
Types de documents multiples </li></ul>
Présentation du projet :  Historique Lucene <ul><li>Créé par Doug Cutting (toujours commiter)
2001 : Rejoins le projet Jakarta </li></ul><ul><li>2005 : Top Level Project à l'ASF </li></ul>Solr <ul><li>2004 : Créé par...
2006 : Rejoins l'incubateur de l'ASF
2007 : Devient un sous-projet Lucene </li></ul><ul><li>Mars 2010 : Fusion des 2 projets
Mars 2011 : Release de Solr 3.1  (numérotation identique à Lucene) </li></ul>
Présentation du projet :  Eco système <ul>Portages : </ul><ul><li>Lucene.NET (C#)
PyLucene
Lucy (portage de Lucene en C)
(Delphi, C++, Perl, Ruby, PHP) </li></ul><ul>Projets utilisés/utilisant Solr/Lucene: </ul><ul><li>Carrot² : Moteur de clus...
Elastic Search (Lucene) : Alternative à Solr – Mode SaaS  (cloud, yeah!)
Hibernate Search (Lucene)
Apache Nutch (Lucene, Hadoop) : Moteur de recherche web (crawler) – Alternative à Solr </li></ul>
Présentation du projet :  Quelques références <ul><li>Apple
Disney
Eclipse IDE (Recherche dans la documentation basée sur Lucene)
Hi5 (réseau social)
MusicBrainz (encyclopédie sur la musique) – Traité dans  « Solr 1.4 Enterprise Search Server »
Nuxeo ECM </li></ul>Sources :  Lucene Powered By page ( http://wiki.apache.org/lucene-java/PoweredBy ) Solr Powered By pag...
Présentation du projet :  Caractéristiques <ul><li>Ecrit en Java (Java 5)
Fonctionne dans un conteneur de Servlet 2.4 (ex : Tomcat) ou en mode  Standalone  (Jetty embarqué)
Exposition des services en HTTP (XML, JSON)
Indexation : JSON, XML, CSV,  rich documents  (PDF, MS Office, OpenDocument), base de données (via connecteurs)
Configuration via fichiers XML (pas d'UI) </li></ul>
Présentation du projet :  Caractéristiques
Les fonctionnalités de Solr
Fonctionnalités <ul><li>Recherche  full text
Prochain SlideShare
Chargement dans…5
×

Presentation solr 10 Aout 2011 (french)

4 469 vues

Publié le

A short introduction on Apache Solr :
- what is the project
- base features (document indexing, querying)
- advanced features (faceting, highlighting...)

(french presentation)

Publié dans : Technologie
1 commentaire
1 j’aime
Statistiques
Remarques
Aucun téléchargement
Vues
Nombre de vues
4 469
Sur SlideShare
0
Issues des intégrations
0
Intégrations
25
Actions
Partages
0
Téléchargements
147
Commentaires
1
J’aime
1
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Presentation solr 10 Aout 2011 (french)

  1. 1. Présentation Apache Solr 12 Août 2011 Thibaud Vibes
  2. 2. Sommaire <ul><li>Présentation du projet
  3. 3. Les fonctionnalités de Solr </li></ul><ul><li>De base
  4. 4. Fonctionnalités coeur
  5. 5. Tunning </li></ul><ul><li>Questions?
  6. 6. Cas d'école (si on a le temps) </li></ul>
  7. 7. Présentation de Solr
  8. 8. Présentation du projet <ul><li>Se prononce SOL A R
  9. 9. Basé sur Lucene
  10. 10. Vocation  : Fournir une solution de recherche avec indexation full text pour l'entreprise </li></ul><ul><li>Personnalisable
  11. 11. Sans avoir à produire de code
  12. 12. Prise en charge de gros volumes
  13. 13. Sources multiples
  14. 14. Types de documents multiples </li></ul>
  15. 15. Présentation du projet : Historique Lucene <ul><li>Créé par Doug Cutting (toujours commiter)
  16. 16. 2001 : Rejoins le projet Jakarta </li></ul><ul><li>2005 : Top Level Project à l'ASF </li></ul>Solr <ul><li>2004 : Créé par Yonik Seeley pour les besoins de son entreprise. Seeley créé la société Lucid Imagination
  17. 17. 2006 : Rejoins l'incubateur de l'ASF
  18. 18. 2007 : Devient un sous-projet Lucene </li></ul><ul><li>Mars 2010 : Fusion des 2 projets
  19. 19. Mars 2011 : Release de Solr 3.1 (numérotation identique à Lucene) </li></ul>
  20. 20. Présentation du projet : Eco système <ul>Portages : </ul><ul><li>Lucene.NET (C#)
  21. 21. PyLucene
  22. 22. Lucy (portage de Lucene en C)
  23. 23. (Delphi, C++, Perl, Ruby, PHP) </li></ul><ul>Projets utilisés/utilisant Solr/Lucene: </ul><ul><li>Carrot² : Moteur de clustering open source => clustering de documents
  24. 24. Elastic Search (Lucene) : Alternative à Solr – Mode SaaS (cloud, yeah!)
  25. 25. Hibernate Search (Lucene)
  26. 26. Apache Nutch (Lucene, Hadoop) : Moteur de recherche web (crawler) – Alternative à Solr </li></ul>
  27. 27. Présentation du projet : Quelques références <ul><li>Apple
  28. 28. Disney
  29. 29. Eclipse IDE (Recherche dans la documentation basée sur Lucene)
  30. 30. Hi5 (réseau social)
  31. 31. MusicBrainz (encyclopédie sur la musique) – Traité dans « Solr 1.4 Enterprise Search Server »
  32. 32. Nuxeo ECM </li></ul>Sources : Lucene Powered By page ( http://wiki.apache.org/lucene-java/PoweredBy ) Solr Powered By page ( http://wiki.apache.org/solr/PublicServers ) <ul><li>Twitter search, depuis 2010 (version modifiée de Lucene) </li></ul>Source : Twitter Engineering blog
  33. 33. Présentation du projet : Caractéristiques <ul><li>Ecrit en Java (Java 5)
  34. 34. Fonctionne dans un conteneur de Servlet 2.4 (ex : Tomcat) ou en mode Standalone (Jetty embarqué)
  35. 35. Exposition des services en HTTP (XML, JSON)
  36. 36. Indexation : JSON, XML, CSV, rich documents (PDF, MS Office, OpenDocument), base de données (via connecteurs)
  37. 37. Configuration via fichiers XML (pas d'UI) </li></ul>
  38. 38. Présentation du projet : Caractéristiques
  39. 39. Les fonctionnalités de Solr
  40. 40. Fonctionnalités <ul><li>Recherche full text
  41. 41. Scoring des résultats
  42. 42. Faceting
  43. 43. Highlighting
  44. 44. Replication
  45. 45. Caching
  46. 46. Clustering des résultats de recherche (Basé sur Carrot²)
  47. 47. Recherche Geo-spatiale
  48. 48. Field Collapsing / Grouping : regroupement ou limitation des résultats </li></ul>
  49. 49. Fonctionnalités : TAL <ul><li>Stemmatisation (Porter, Snowball)
  50. 50. Gestion de la synonymie (via dictionnaire)
  51. 51. Correction orthographique (spell checking + suggestion)
  52. 52. Recherche par sons (DoubleMetaphone, Metaphone, RefinedSoundex, and Soundex)
  53. 53. => Multi-lingue </li></ul>
  54. 54. Fonctionnalités de base - Ajouter un document <ul><li>url : /update
  55. 55. Format : XML/HTTP POST, balise <add />
  56. 56. Ne pas oublier le <commit /> à la fin ! (pas en autocommit par défaut) </li></ul>
  57. 57. Fonctionnalités de base - Ajouter un document <ul><li>url : /update
  58. 58. Format : XML/HTTP POST, balise <add />
  59. 59. Ne pas oublier le <commit /> à la fin ! (pas en autocommit par défaut) </li></ul>Exemple :
  60. 60. Fonctionnalités de base - Modifier un document <ul><li>Pas de notion de modification : save or update
  61. 61. url : /update
  62. 62. On ré ajoute le document (avec tous les champs!) Solr se base sur l'identifiant </li></ul>
  63. 63. Fonctionnalités de base - Supprimer un document <ul><li>url : /update
  64. 64. Format : XML/HTTP POST, balise <delete />
  65. 65. Delete by id
  66. 66. Delete by query
  67. 67. <commit /> obligatoire </li></ul>
  68. 68. Fonctionnalités de base - Supprimer un document <ul><li>url : /update
  69. 69. Format : XML/HTTP POST, balise <delete />
  70. 70. Delete by id
  71. 71. Delete by query
  72. 72. <commit /> obligatoire </li></ul>Exemples :
  73. 73. Fonctionnalités de base (cf wiki ONYME – Page Solr OU dossier /example/exampledocs/post.sh de l'archive apache-solr-*)
  74. 74. Fonctionnalités de base - Recherche <ul><li>url : /select
  75. 75. Format : HTTP GET (QueryString)
  76. 76. Forme : champ1:mot1 champ2:mot2 champs3:(mot1 mot2)
  77. 77. Opérateurs : AND, OR
  78. 78. Wildcard : *, ? (sur certain types de champs seulement)
  79. 79. Hautement paramétrable </li></ul>
  80. 80. Fonctionnalités de base - Recherche <ul><li>url : /select
  81. 81. Format : HTTP GET (QueryString)
  82. 82. Forme : champ1:mot1 champ2:mot2 champs3:(mot1 mot2)
  83. 83. Opérateurs : AND, OR
  84. 84. Wildcard : *, ? (sur certain types de champs seulement)
  85. 85. Hautement paramétrable </li></ul>Exemple : Rechercher « solr » dans les champs content et keyword_txt => content:solr keyword_txt:solr Limiter à 10 résultats => rows=10 N'afficher que les champs content , filename et le scoring => fl=content,filename,score
  86. 86. Fonctionnalités de base Recherche : Interface de tests (/solr/admin)
  87. 87. Fonctionnalités de base - Recherche Résultats :
  88. 88. Tout objet implémentant SolrRequestHandler peut être pris en charge pour le traitement de requêtes et offrir un nouveau service Fonctionnalités coeur - RequestHandler <ul><li>Plugin qui gère le traitement d'une requête
  89. 89. Permet de figer la personnalisation
  90. 90. A configurer dans ${SOLR_HOME}/conf/solrconfig.xml
  91. 91. La personnalisation peut être surchargée lors de la requête
  92. 92. Offre une grande extensibilité à Solr </li></ul>
  93. 93. Fonctionnalités coeur - RequestHandler Exemples de RequestHandler : <ul><li>XmlUpdateRequestHandler : ajout de documents XML
  94. 94. JsonUpdateRequestHandler
  95. 95. SearchHandler : traitement des requêtes de recherche
  96. 96. DataImportHandler : Connecteur pour base de données
  97. 97. … </li></ul>Doc : http://wiki.apache.org/solr/SolrRequestHandler
  98. 98. Fonctionnalités coeur - RequestHandler Exemple de paramétrage du SearchHandler  : url : /select url : /showall
  99. 99. Fonctionnalités coeur – Schéma (~index) <ul><li>Apport de Solr par rapport à Lucene
  100. 100. ${SOLR_HOME}/conf/schemas.xml </li></ul><ul><li>Définition des types de champs
  101. 101. Définition des champs
  102. 102. Spécification de la clé primaire <uniqueKey />
  103. 103. Champ recherché par défaut
  104. 104. Opérateur par défaut (OR | AND)
  105. 105. Système schemas-less !? </li></ul><ul><li>Doc : http://wiki.apache.org/solr/SchemaXml </li></ul>
  106. 106. Fonctionnalités coeur – Type de champs <ul><li>Balise <typeField />
  107. 107. Attributs </li></ul><ul><li>class (Ex : &quot;solr.TextField&quot;)
  108. 108. name (Ex : &quot;text&quot;)
  109. 109. stored (true|false)
  110. 110. indexed (true|false)
  111. 111. multiValued (true|false)
  112. 112. ... </li></ul><ul><li>Analyzers (optionnels) = chaînes de traitements </li></ul><ul><li>type=&quot;index&quot;
  113. 113. type=&quot;query&quot;
  114. 114. doc : http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters </li></ul>
  115. 115. 3 Exemples :
  116. 116. Fonctionnalités coeur – Champs <ul><li>Balise <field />
  117. 117. Attributs </li></ul><ul><li>name, type, required
  118. 118. + possibilité de surcharger les attributs définis dans le type : stored, indexed,multiValued,omitNorms, omitTermFreqAndPositions </li></ul>
  119. 119. Fonctionnalités coeur – Mais aussi ... <ul><li><dynamicField /> </li></ul><ul><li>Pas besoin de redéfinir le schemas si on souhaite ajouter des documents d'autres sources.
  120. 120. Schemas less <= killer feature </li></ul><ul><li><copyField> </li></ul>
  121. 121. Fonctionnalités tunning – Highlighting <ul><li>Affichage d'un « extrait » contenant la recherche (ala Google)
  122. 122. Possibilité de personnaliser : </li></ul><ul><li>Le nombre d'extraits
  123. 123. Le markup html employé pour « entourer » le(s) mot(s) qui matche(nt)
  124. 124. La longueur de l'extrait </li></ul>
  125. 125. Fonctionnalités tunning – Highlighting <ul><li>Affichage d'un « extrait » contenant la recherche (ala Google)
  126. 126. Possibilité de personnaliser : </li></ul><ul><li>Le nombre d'extraits
  127. 127. Le markup html employé pour « entourer » le(s) mot(s) qui matche(nt)
  128. 128. La longueur de l'extrait </li></ul>Paramétrage (solrconfig.xml)
  129. 129. Exemple de résultat <uniqueKey /> Nom du champ Markup HTML
  130. 130. Fonctionnalités tunning – Faceting <ul><li>Equivalent d'un SELECT count(<champ>) … GROUP BY
  131. 131. Possibilité de : </li></ul><ul><li>personnaliser l a liste des champs sur lesquels activer le faceting
  132. 132. indiquer si on veut afficher les champs pour lesquels il n'y a aucun résultats
  133. 133. Définir des facet intervalle : champ numériques (ex : « prix »), dates </li></ul>
  134. 134. Fonctionnalités tunning – Faceting <ul><li>Equivalent d'un SELECT count(<champ>) … GROUP BY
  135. 135. Possibilité de : </li></ul><ul><li>personnaliser l a liste des champs sur lesquels activer le faceting
  136. 136. indiquer si on veut afficher les champs pour lesquels il n'y a aucun résultats
  137. 137. Définir des facet intervalle : champ numériques (ex : « prix »), dates </li></ul>Paramétrage (solrconfig.xml)
  138. 138. Exemple de résultat Facet sur le chame typeDoc Facet intervalle :
  139. 139. Fonctionnalités tunning – Pondération des champs <ul><li>Donner +/- d'importance à un champ
  140. 140. Intervient dans le calcul du score </li></ul>
  141. 141. Fonctionnalités tunning – Pondération des champs <ul><li>Donner +/- d'importance à un champ
  142. 142. Intervient dans le calcul du score </li></ul>Exemple de paramétrage (solrconfig.xml)
  143. 143. … mais aussi beaucoup d'autres ! (caching, recherche distribuée, recherche geo-spatiale, ...) Fonctionnalités tunning
  144. 144. Questions? tvibes [at] onyme [dot] com http://twitter.com/thibaudvibes http://gplus.to/tvibes

×