Your SlideShare is downloading. ×
Presentation solr 10 Aout 2011 (french)
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Presentation solr 10 Aout 2011 (french)

3,781
views

Published on

A short introduction on Apache Solr : …

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

(french presentation)

Published in: Technology

1 Comment
1 Like
Statistics
Notes
No Downloads
Views
Total Views
3,781
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
123
Comments
1
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

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