SlideShare una empresa de Scribd logo
1 de 25
Moteurs de Recherche
Lucene, Solr et Elasticsearch en
Action
@LucianPrecup
@LorraineJUG
2012-11-29
Objectif
• Patterns d’architecture
• Outils pour démarrer et exploiter au mieux les
technologies
• Solr
– Accent sur l’indexation
• ElasticSearch
– Accent sur la recherche
• Démonstrations
Historique - avant
BDidx
Appli
Répertoire
file file file
< >
< >
< >
www
Browse
Filter
Sort
Get
Historique - après
BDidx
Appli
Répertoire
file file file
< >
< >
< >
www
Index
Search
Filter
Sort
Get
Moteurs de recherche – valeur ajoutée
pour les applications d’entreprise
• Expérience utilisateur / Ergonomie de
l’application
– Navigation « à la Google »
– Accès quasi-direct à la donnée recherchée
– Navigation par facettes
– Pagination disponible « out of the box »
– Performances maximisées impliquant une
fluidité accrue des applications
– Suggestions (auto-complétion) des termes à
rechercher
• Fonctionnalités de recherche sémantique très
puissantes
– Recherche approximative, recherche
phonétique, correction grammaticale et
d’orthographe, gestion des mots techniques, des
synonymes et des mots composés
• Plus rapide que les approches SQL traditionnels
Fonctionnalités
• Indexation
– Données non-structurées (fichiers)
– Données semi-structurées (email)
– Analyse du texte
• Recherche
– Fulltext, multicritère, suggestion
– Facettes, filtres, tris
– Sémantique
Pagination gérée par le moteurPagination gérée par le moteur
Navigation par facettes
- Calculées avec les
résultats de recherche
- Filtres de recherche à
renseigner apostériori
Navigation par facettes
- Calculées avec les
résultats de recherche
- Filtres de recherche à
renseigner apostériori
Auto-complétion
(suggestions de
résultats)
Surbrillance gérée par le
moteur
Auto-complétion
(suggestions de
résultats)
Surbrillance gérée par le
moteur
Recherche rapide
« full-text »
Recherche rapide
« full-text »
Nombre total
des
résultats
Nombre total
des
résultats
Tri sur l’ensemble
des résultats (pas
seulement page
en cours)
Tri sur l’ensemble
des résultats (pas
seulement page
en cours)
Résultats affichés
sous la forme de
« mini-fiches »
Résultats affichés
sous la forme de
« mini-fiches »
Recherche approximative et
suggestions d’orthographe
Recherche approximative et
suggestions d’orthographe
Accès aux recherches
multicritères
Accès aux recherches
multicritères
NoSQL et Moteurs de Recherche –
alternative aux SGBDs classiques
Synchronisatio
n temps réel
Synchronisatio
n temps réel
Alternative aux outils BI
traditionnels
-La navigation par facettes
-Les statistiques sur les champs
-Le regroupement automatique
des résultats de recherche
Alternative aux outils BI
traditionnels
-La navigation par facettes
-Les statistiques sur les champs
-Le regroupement automatique
des résultats de recherche
Facettes simples ou
complexes calculées en
même temps que les
résultats de recherche
Facettes simples ou
complexes calculées en
même temps que les
résultats de recherche
Certaines requêtes (ex.
ORDER BY, GROUP BY ou
LIKE) iront plus vite
Certaines requêtes (ex.
ORDER BY, GROUP BY ou
LIKE) iront plus vite
Utilisation du moteur à
la place ou en
complément de la base
de données
Utilisation du moteur à
la place ou en
complément de la base
de données
Technologies
• Google Search Appliance
• MS FAST Search
• ...
• Open Search Server
• Apache Solr
• Elasticsearch
Open Search Server
• Startup française, produit conçu et développé en France
• Solution complète intégrant
– crawlers (JDBC, CIFS/SAMBA, FTP, FTPS, Dropbox, web)
– parseurs (documents riches, images, video, sons, OCR)
– indexation (analyseurs, lemmatisation, thesaurus, identification
d'entité nommée, classification automatique)
– requêtes (recherche full text, filtrage et facette,
jointures, cluster, correction orthographique)
– scheduler
– API (Rest/XML, Rest/Json, SOAP)
– interface utilisateur RIA
• Noyau
– Lucene pour la version 1.3
– C (via JNA) pour la prochaine version 2.0
Intégration Solr (v3)
• Clustering : répartiteur de charge et redondance des SA
• Indexation en masse : dizaine de millions de documents
• Fonctions avancées d’analyse du texte
Démo Solr – alimenter l’index
• Importer une BD
• Join
• Entités et référencement avec ${parent.ID}
• GROUP_CONCAT
• Indexer des fichiers binaires (Word, Excel, PDF)
Types de champs dans l’index
• stored / not_stored
• analyzed / not_analyzed
• Champs de recherche
• Champs de tri
• Champs pour l’affichage
• Champs pour les facettes
• Champs mixtes
Démo Solr – auto-complétion
Analyzers / Tokenizers / Token filters
Document entrée 
Indexation Recherche
Id Nom
1 Céline
Ascii folding  Celine
Lowercase  celine
EdgeNGram  ce cel celi celin celine
Clé Id document
ce 1
cel 1
celi 1
celin 1
celine 1
Index
 Terme recherché
Nom
Celin
Celin  Ascii folding
celin  Lowercase
Analyzers / Tokenizers / Token filters
Documents entrée 
Indexation Recherche
Id Nom
1 Céline
2 Celia
Ascii folding  Celine, Celia
Lowercase  celine, celia
EdgeNGram  ce cel celi celin celine
ce cel celi celia
Clé Id document
ce 1, 2
cel 1, 2
celi 1, 2
celin 1
celine 1
celia 2
Index
 Terme recherché
Nom
Célin
Celin  Ascii folding
celin  Lowercase
ce cel celi celin  EdgeNGram
Solr – zoom sur les outils
• Luke
• Explain
• Solr Admin (stats, query form, analysis)
• Solr browse search UI
Elasticsearch - spécificités
• Clustering
• Schéma auto
• Rivers et indexation en temps réel
• Percolation
Intégration – Elasticsearch
Elasticsearch - clustering
Elasticsearch – zoom sur les outils
• curl
• ESHead
• "explain" : 1
Démo – Pertinence
• Comment est calculé le score
• Comment influencer le score
Démo - recherche
• Analyse à la recherche, requêtes composés
• Highlighting
• Fuzzy
• Facettes
• Filtres
Use case métier
• E-commerce
– Beaucoup de critères de pertinence métier à implémenter
• Ressources humaines
– Recherche de personnes
– Recherche full-texte (catalogues formation, CVs, compétences)
• Poste de travail
– Modèle métier complexe
– Indexation temps réel
• Portail intranet
– Hétérogénéité des sources données: annuaires, wikis, fichiers,
applications
• Internet
– Pertinence du premier résultat. Ex. : « I’m feeling lucky » de Google,
Siri, LeMoteur.fr
Merci
Q & A

Más contenido relacionado

Destacado

Introduction to Apache Solr
Introduction to Apache SolrIntroduction to Apache Solr
Introduction to Apache SolrAndy Jackson
 
Apache Solr crash course
Apache Solr crash courseApache Solr crash course
Apache Solr crash courseTommaso Teofili
 
Introduction to Elasticsearch with basics of Lucene
Introduction to Elasticsearch with basics of LuceneIntroduction to Elasticsearch with basics of Lucene
Introduction to Elasticsearch with basics of LuceneRahul Jain
 
ElasticSearch : Architecture et Développement
ElasticSearch : Architecture et DéveloppementElasticSearch : Architecture et Développement
ElasticSearch : Architecture et DéveloppementMohamed hedi Abidi
 
ElasticSearch Basic Introduction
ElasticSearch Basic IntroductionElasticSearch Basic Introduction
ElasticSearch Basic IntroductionMayur Rathod
 
API : l'architecture REST
API : l'architecture RESTAPI : l'architecture REST
API : l'architecture RESTFadel Chafai
 
Elasticsearch - Devoxx France 2012
Elasticsearch - Devoxx France 2012Elasticsearch - Devoxx France 2012
Elasticsearch - Devoxx France 2012David Pilato
 
La veille de Red Guy du 04.07.12 : La mythologie
La veille de Red Guy du 04.07.12 : La mythologieLa veille de Red Guy du 04.07.12 : La mythologie
La veille de Red Guy du 04.07.12 : La mythologieRed Guy
 
Le tri des déchets - atelier
Le tri des déchets - atelierLe tri des déchets - atelier
Le tri des déchets - atelierCap'Com
 
Présentation d'Elvis
Présentation d'ElvisPrésentation d'Elvis
Présentation d'ElvisTeresaSousa
 
CapCom13: AT6: Atténuer les incivilités
CapCom13: AT6: Atténuer les incivilitésCapCom13: AT6: Atténuer les incivilités
CapCom13: AT6: Atténuer les incivilitésCap'Com
 
Ademe_Laurent Thibaud_Bilan énergétique de la ville numérique
Ademe_Laurent Thibaud_Bilan énergétique de la ville numériqueAdeme_Laurent Thibaud_Bilan énergétique de la ville numérique
Ademe_Laurent Thibaud_Bilan énergétique de la ville numériqueMetro'num 2011
 
Du côté du cdi 18 9mars
Du côté du cdi 18 9marsDu côté du cdi 18 9mars
Du côté du cdi 18 9marsClaudie Merlet
 
Influence Tendances
Influence TendancesInfluence Tendances
Influence Tendancesguestdd05579
 

Destacado (17)

Introduction to Apache Solr
Introduction to Apache SolrIntroduction to Apache Solr
Introduction to Apache Solr
 
Apache Solr crash course
Apache Solr crash courseApache Solr crash course
Apache Solr crash course
 
Introduction to Elasticsearch with basics of Lucene
Introduction to Elasticsearch with basics of LuceneIntroduction to Elasticsearch with basics of Lucene
Introduction to Elasticsearch with basics of Lucene
 
ElasticSearch : Architecture et Développement
ElasticSearch : Architecture et DéveloppementElasticSearch : Architecture et Développement
ElasticSearch : Architecture et Développement
 
ElasticSearch Basic Introduction
ElasticSearch Basic IntroductionElasticSearch Basic Introduction
ElasticSearch Basic Introduction
 
API : l'architecture REST
API : l'architecture RESTAPI : l'architecture REST
API : l'architecture REST
 
Elasticsearch - Devoxx France 2012
Elasticsearch - Devoxx France 2012Elasticsearch - Devoxx France 2012
Elasticsearch - Devoxx France 2012
 
La veille de Red Guy du 04.07.12 : La mythologie
La veille de Red Guy du 04.07.12 : La mythologieLa veille de Red Guy du 04.07.12 : La mythologie
La veille de Red Guy du 04.07.12 : La mythologie
 
Le tri des déchets - atelier
Le tri des déchets - atelierLe tri des déchets - atelier
Le tri des déchets - atelier
 
Présentation d'Elvis
Présentation d'ElvisPrésentation d'Elvis
Présentation d'Elvis
 
La Revisión Literaria
La Revisión LiterariaLa Revisión Literaria
La Revisión Literaria
 
CapCom13: AT6: Atténuer les incivilités
CapCom13: AT6: Atténuer les incivilitésCapCom13: AT6: Atténuer les incivilités
CapCom13: AT6: Atténuer les incivilités
 
La sombra
La sombraLa sombra
La sombra
 
Ademe_Laurent Thibaud_Bilan énergétique de la ville numérique
Ademe_Laurent Thibaud_Bilan énergétique de la ville numériqueAdeme_Laurent Thibaud_Bilan énergétique de la ville numérique
Ademe_Laurent Thibaud_Bilan énergétique de la ville numérique
 
Du côté du cdi 18 9mars
Du côté du cdi 18 9marsDu côté du cdi 18 9mars
Du côté du cdi 18 9mars
 
Influence Tendances
Influence TendancesInfluence Tendances
Influence Tendances
 
Marketing Information System About My Memoir (French)
Marketing Information System About My Memoir (French)Marketing Information System About My Memoir (French)
Marketing Information System About My Memoir (French)
 

Similar a Moteurs de recherche et Lucene at LorraineJUG

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)Lucian Precup
 
Presentation Lucene / Solr / Datafari - Nantes JUG
Presentation Lucene / Solr / Datafari - Nantes JUGPresentation Lucene / Solr / Datafari - Nantes JUG
Presentation Lucene / Solr / Datafari - Nantes JUGfrancelabs
 
#Collab365 L'importance des métadonnées pour votre entreprise
#Collab365 L'importance des métadonnées pour votre entreprise#Collab365 L'importance des métadonnées pour votre entreprise
#Collab365 L'importance des métadonnées pour votre entrepriseVincent Biret
 
14h constellio rida_benelloun
14h constellio rida_benelloun14h constellio rida_benelloun
14h constellio rida_benellounAssociationAF
 
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 ElasticSearchfrancelabs
 
Du bon usage de google : la recherche d'information sur le Web
Du bon usage de google : la recherche d'information sur le WebDu bon usage de google : la recherche d'information sur le Web
Du bon usage de google : la recherche d'information sur le WebChristophe Charmetton
 
A la recherche d'ElasticSearch
A la recherche d'ElasticSearchA la recherche d'ElasticSearch
A la recherche d'ElasticSearchNinnir
 
La recherche sur Internet: devenez un super chercheur
La recherche sur Internet: devenez un super chercheurLa recherche sur Internet: devenez un super chercheur
La recherche sur Internet: devenez un super chercheurElium
 
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 2014francelabs
 
Geneva jug Lucene Solr
Geneva jug Lucene Solr Geneva jug Lucene Solr
Geneva jug Lucene Solr francelabs
 
La technique web au service du suivi SEO
La technique web au service du suivi SEOLa technique web au service du suivi SEO
La technique web au service du suivi SEOSemrush
 
Contribuer à schema.org - Retour d’expérience : extension ELI pour les lois ...
Contribuer à schema.org - Retour d’expérience : extension ELI pour les lois ...Contribuer à schema.org - Retour d’expérience : extension ELI pour les lois ...
Contribuer à schema.org - Retour d’expérience : extension ELI pour les lois ...pwod
 
aMS 2021 - De bonnes pratiques pour rendre SharePoint plus ludique
aMS 2021 - De bonnes pratiques pour rendre SharePoint plus ludiqueaMS 2021 - De bonnes pratiques pour rendre SharePoint plus ludique
aMS 2021 - De bonnes pratiques pour rendre SharePoint plus ludiqueLaurent Sittler
 
Solution de recherche Drupal
Solution de recherche DrupalSolution de recherche Drupal
Solution de recherche DrupalCore-Techs
 
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 Labsfrancelabs
 
June Spark meetup : search as recommandation
June Spark meetup : search as recommandationJune Spark meetup : search as recommandation
June Spark meetup : search as recommandationModern Data Stack France
 
Soutenance Essilor - Master PIC
Soutenance Essilor - Master PICSoutenance Essilor - Master PIC
Soutenance Essilor - Master PICDavid Nowinsky
 
Doctorat sciences - Recherche bibliographique : méthode, sources et outils
Doctorat sciences - Recherche bibliographique : méthode, sources et outilsDoctorat sciences - Recherche bibliographique : méthode, sources et outils
Doctorat sciences - Recherche bibliographique : méthode, sources et outilsFrédérique Flamerie
 
Elastic Workplace Search : la recherche ultra performante
Elastic Workplace Search : la recherche ultra performanteElastic Workplace Search : la recherche ultra performante
Elastic Workplace Search : la recherche ultra performanteElasticsearch
 

Similar a Moteurs de recherche et Lucene at LorraineJUG (20)

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)
 
Offre Search
Offre SearchOffre Search
Offre Search
 
Presentation Lucene / Solr / Datafari - Nantes JUG
Presentation Lucene / Solr / Datafari - Nantes JUGPresentation Lucene / Solr / Datafari - Nantes JUG
Presentation Lucene / Solr / Datafari - Nantes JUG
 
#Collab365 L'importance des métadonnées pour votre entreprise
#Collab365 L'importance des métadonnées pour votre entreprise#Collab365 L'importance des métadonnées pour votre entreprise
#Collab365 L'importance des métadonnées pour votre entreprise
 
14h constellio rida_benelloun
14h constellio rida_benelloun14h constellio rida_benelloun
14h constellio rida_benelloun
 
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
 
Du bon usage de google : la recherche d'information sur le Web
Du bon usage de google : la recherche d'information sur le WebDu bon usage de google : la recherche d'information sur le Web
Du bon usage de google : la recherche d'information sur le Web
 
A la recherche d'ElasticSearch
A la recherche d'ElasticSearchA la recherche d'ElasticSearch
A la recherche d'ElasticSearch
 
La recherche sur Internet: devenez un super chercheur
La recherche sur Internet: devenez un super chercheurLa recherche sur Internet: devenez un super chercheur
La recherche sur Internet: devenez un super chercheur
 
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
 
Geneva jug Lucene Solr
Geneva jug Lucene Solr Geneva jug Lucene Solr
Geneva jug Lucene Solr
 
La technique web au service du suivi SEO
La technique web au service du suivi SEOLa technique web au service du suivi SEO
La technique web au service du suivi SEO
 
Contribuer à schema.org - Retour d’expérience : extension ELI pour les lois ...
Contribuer à schema.org - Retour d’expérience : extension ELI pour les lois ...Contribuer à schema.org - Retour d’expérience : extension ELI pour les lois ...
Contribuer à schema.org - Retour d’expérience : extension ELI pour les lois ...
 
aMS 2021 - De bonnes pratiques pour rendre SharePoint plus ludique
aMS 2021 - De bonnes pratiques pour rendre SharePoint plus ludiqueaMS 2021 - De bonnes pratiques pour rendre SharePoint plus ludique
aMS 2021 - De bonnes pratiques pour rendre SharePoint plus ludique
 
Solution de recherche Drupal
Solution de recherche DrupalSolution de recherche Drupal
Solution de recherche Drupal
 
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
 
June Spark meetup : search as recommandation
June Spark meetup : search as recommandationJune Spark meetup : search as recommandation
June Spark meetup : search as recommandation
 
Soutenance Essilor - Master PIC
Soutenance Essilor - Master PICSoutenance Essilor - Master PIC
Soutenance Essilor - Master PIC
 
Doctorat sciences - Recherche bibliographique : méthode, sources et outils
Doctorat sciences - Recherche bibliographique : méthode, sources et outilsDoctorat sciences - Recherche bibliographique : méthode, sources et outils
Doctorat sciences - Recherche bibliographique : méthode, sources et outils
 
Elastic Workplace Search : la recherche ultra performante
Elastic Workplace Search : la recherche ultra performanteElastic Workplace Search : la recherche ultra performante
Elastic Workplace Search : la recherche ultra performante
 

Más de Lucian Precup

Enrich data and rewrite queries with the Elasticsearch percolator
Enrich data and rewrite queries with the Elasticsearch percolatorEnrich data and rewrite queries with the Elasticsearch percolator
Enrich data and rewrite queries with the Elasticsearch percolatorLucian Precup
 
Joins in a distributed world Distributed Matters Barcelona 2015
Joins in a distributed world Distributed Matters Barcelona 2015Joins in a distributed world Distributed Matters Barcelona 2015
Joins in a distributed world Distributed Matters Barcelona 2015Lucian Precup
 
Search and nosql for information management @nosqlmatters Cologne
Search and nosql for information management @nosqlmatters CologneSearch and nosql for information management @nosqlmatters Cologne
Search and nosql for information management @nosqlmatters CologneLucian Precup
 
Back to the future : SQL 92 for Elasticsearch ? @nosqlmatters Dublin 2014
Back to the future : SQL 92 for Elasticsearch ? @nosqlmatters Dublin 2014Back to the future : SQL 92 for Elasticsearch ? @nosqlmatters Dublin 2014
Back to the future : SQL 92 for Elasticsearch ? @nosqlmatters Dublin 2014Lucian Precup
 
Back to the future : SQL 92 for Elasticsearch @nosqlmatters Paris
Back to the future : SQL 92 for Elasticsearch @nosqlmatters ParisBack to the future : SQL 92 for Elasticsearch @nosqlmatters Paris
Back to the future : SQL 92 for Elasticsearch @nosqlmatters ParisLucian Precup
 
Search, nosql et bigdata avec les moteurs de recherche
Search, nosql et bigdata avec les moteurs de rechercheSearch, nosql et bigdata avec les moteurs de recherche
Search, nosql et bigdata avec les moteurs de rechercheLucian Precup
 
ALM et Agilite : la convergence
ALM et Agilite : la convergenceALM et Agilite : la convergence
ALM et Agilite : la convergenceLucian Precup
 
La revue de code : facile !
La revue de code : facile !La revue de code : facile !
La revue de code : facile !Lucian Precup
 
La revue de code : agile, lean, indispensable !
La revue de code : agile, lean, indispensable !La revue de code : agile, lean, indispensable !
La revue de code : agile, lean, indispensable !Lucian Precup
 

Más de Lucian Precup (9)

Enrich data and rewrite queries with the Elasticsearch percolator
Enrich data and rewrite queries with the Elasticsearch percolatorEnrich data and rewrite queries with the Elasticsearch percolator
Enrich data and rewrite queries with the Elasticsearch percolator
 
Joins in a distributed world Distributed Matters Barcelona 2015
Joins in a distributed world Distributed Matters Barcelona 2015Joins in a distributed world Distributed Matters Barcelona 2015
Joins in a distributed world Distributed Matters Barcelona 2015
 
Search and nosql for information management @nosqlmatters Cologne
Search and nosql for information management @nosqlmatters CologneSearch and nosql for information management @nosqlmatters Cologne
Search and nosql for information management @nosqlmatters Cologne
 
Back to the future : SQL 92 for Elasticsearch ? @nosqlmatters Dublin 2014
Back to the future : SQL 92 for Elasticsearch ? @nosqlmatters Dublin 2014Back to the future : SQL 92 for Elasticsearch ? @nosqlmatters Dublin 2014
Back to the future : SQL 92 for Elasticsearch ? @nosqlmatters Dublin 2014
 
Back to the future : SQL 92 for Elasticsearch @nosqlmatters Paris
Back to the future : SQL 92 for Elasticsearch @nosqlmatters ParisBack to the future : SQL 92 for Elasticsearch @nosqlmatters Paris
Back to the future : SQL 92 for Elasticsearch @nosqlmatters Paris
 
Search, nosql et bigdata avec les moteurs de recherche
Search, nosql et bigdata avec les moteurs de rechercheSearch, nosql et bigdata avec les moteurs de recherche
Search, nosql et bigdata avec les moteurs de recherche
 
ALM et Agilite : la convergence
ALM et Agilite : la convergenceALM et Agilite : la convergence
ALM et Agilite : la convergence
 
La revue de code : facile !
La revue de code : facile !La revue de code : facile !
La revue de code : facile !
 
La revue de code : agile, lean, indispensable !
La revue de code : agile, lean, indispensable !La revue de code : agile, lean, indispensable !
La revue de code : agile, lean, indispensable !
 

Moteurs de recherche et Lucene at LorraineJUG

  • 1. Moteurs de Recherche Lucene, Solr et Elasticsearch en Action @LucianPrecup @LorraineJUG 2012-11-29
  • 2. Objectif • Patterns d’architecture • Outils pour démarrer et exploiter au mieux les technologies • Solr – Accent sur l’indexation • ElasticSearch – Accent sur la recherche • Démonstrations
  • 3. Historique - avant BDidx Appli Répertoire file file file < > < > < > www Browse Filter Sort Get
  • 4. Historique - après BDidx Appli Répertoire file file file < > < > < > www Index Search Filter Sort Get
  • 5. Moteurs de recherche – valeur ajoutée pour les applications d’entreprise • Expérience utilisateur / Ergonomie de l’application – Navigation « à la Google » – Accès quasi-direct à la donnée recherchée – Navigation par facettes – Pagination disponible « out of the box » – Performances maximisées impliquant une fluidité accrue des applications – Suggestions (auto-complétion) des termes à rechercher • Fonctionnalités de recherche sémantique très puissantes – Recherche approximative, recherche phonétique, correction grammaticale et d’orthographe, gestion des mots techniques, des synonymes et des mots composés • Plus rapide que les approches SQL traditionnels
  • 6. Fonctionnalités • Indexation – Données non-structurées (fichiers) – Données semi-structurées (email) – Analyse du texte • Recherche – Fulltext, multicritère, suggestion – Facettes, filtres, tris – Sémantique
  • 7. Pagination gérée par le moteurPagination gérée par le moteur Navigation par facettes - Calculées avec les résultats de recherche - Filtres de recherche à renseigner apostériori Navigation par facettes - Calculées avec les résultats de recherche - Filtres de recherche à renseigner apostériori Auto-complétion (suggestions de résultats) Surbrillance gérée par le moteur Auto-complétion (suggestions de résultats) Surbrillance gérée par le moteur Recherche rapide « full-text » Recherche rapide « full-text » Nombre total des résultats Nombre total des résultats Tri sur l’ensemble des résultats (pas seulement page en cours) Tri sur l’ensemble des résultats (pas seulement page en cours) Résultats affichés sous la forme de « mini-fiches » Résultats affichés sous la forme de « mini-fiches » Recherche approximative et suggestions d’orthographe Recherche approximative et suggestions d’orthographe Accès aux recherches multicritères Accès aux recherches multicritères
  • 8. NoSQL et Moteurs de Recherche – alternative aux SGBDs classiques Synchronisatio n temps réel Synchronisatio n temps réel Alternative aux outils BI traditionnels -La navigation par facettes -Les statistiques sur les champs -Le regroupement automatique des résultats de recherche Alternative aux outils BI traditionnels -La navigation par facettes -Les statistiques sur les champs -Le regroupement automatique des résultats de recherche Facettes simples ou complexes calculées en même temps que les résultats de recherche Facettes simples ou complexes calculées en même temps que les résultats de recherche Certaines requêtes (ex. ORDER BY, GROUP BY ou LIKE) iront plus vite Certaines requêtes (ex. ORDER BY, GROUP BY ou LIKE) iront plus vite Utilisation du moteur à la place ou en complément de la base de données Utilisation du moteur à la place ou en complément de la base de données
  • 9. Technologies • Google Search Appliance • MS FAST Search • ... • Open Search Server • Apache Solr • Elasticsearch
  • 10. Open Search Server • Startup française, produit conçu et développé en France • Solution complète intégrant – crawlers (JDBC, CIFS/SAMBA, FTP, FTPS, Dropbox, web) – parseurs (documents riches, images, video, sons, OCR) – indexation (analyseurs, lemmatisation, thesaurus, identification d'entité nommée, classification automatique) – requêtes (recherche full text, filtrage et facette, jointures, cluster, correction orthographique) – scheduler – API (Rest/XML, Rest/Json, SOAP) – interface utilisateur RIA • Noyau – Lucene pour la version 1.3 – C (via JNA) pour la prochaine version 2.0
  • 11. Intégration Solr (v3) • Clustering : répartiteur de charge et redondance des SA • Indexation en masse : dizaine de millions de documents • Fonctions avancées d’analyse du texte
  • 12. Démo Solr – alimenter l’index • Importer une BD • Join • Entités et référencement avec ${parent.ID} • GROUP_CONCAT • Indexer des fichiers binaires (Word, Excel, PDF)
  • 13. Types de champs dans l’index • stored / not_stored • analyzed / not_analyzed • Champs de recherche • Champs de tri • Champs pour l’affichage • Champs pour les facettes • Champs mixtes
  • 14. Démo Solr – auto-complétion
  • 15. Analyzers / Tokenizers / Token filters Document entrée  Indexation Recherche Id Nom 1 Céline Ascii folding  Celine Lowercase  celine EdgeNGram  ce cel celi celin celine Clé Id document ce 1 cel 1 celi 1 celin 1 celine 1 Index  Terme recherché Nom Celin Celin  Ascii folding celin  Lowercase
  • 16. Analyzers / Tokenizers / Token filters Documents entrée  Indexation Recherche Id Nom 1 Céline 2 Celia Ascii folding  Celine, Celia Lowercase  celine, celia EdgeNGram  ce cel celi celin celine ce cel celi celia Clé Id document ce 1, 2 cel 1, 2 celi 1, 2 celin 1 celine 1 celia 2 Index  Terme recherché Nom Célin Celin  Ascii folding celin  Lowercase ce cel celi celin  EdgeNGram
  • 17. Solr – zoom sur les outils • Luke • Explain • Solr Admin (stats, query form, analysis) • Solr browse search UI
  • 18. Elasticsearch - spécificités • Clustering • Schéma auto • Rivers et indexation en temps réel • Percolation
  • 21. Elasticsearch – zoom sur les outils • curl • ESHead • "explain" : 1
  • 22. Démo – Pertinence • Comment est calculé le score • Comment influencer le score
  • 23. Démo - recherche • Analyse à la recherche, requêtes composés • Highlighting • Fuzzy • Facettes • Filtres
  • 24. Use case métier • E-commerce – Beaucoup de critères de pertinence métier à implémenter • Ressources humaines – Recherche de personnes – Recherche full-texte (catalogues formation, CVs, compétences) • Poste de travail – Modèle métier complexe – Indexation temps réel • Portail intranet – Hétérogénéité des sources données: annuaires, wikis, fichiers, applications • Internet – Pertinence du premier résultat. Ex. : « I’m feeling lucky » de Google, Siri, LeMoteur.fr

Notas del editor

  1. Comment sont apparus les moteurs de recherche Fonctions: indexation, recherche, analyse du texte!!! Avant : Information structurées par domaine applicatif ; base de données (table, colonne), FS (fichier, contenu), Site Web (Plan de site et pages) process d’accès a l’information : naviguer / parcourir puis filtrer/trier navigation dans tout l’espace recherché Apres : Information non structurée et héterogènes : Process : Search puis filtrer / trier : navigation dans le résultat
  2. Comment sont apparus les moteurs de recherche Fonctions: indexation, recherche, analyse du texte!!! Avant : Information structurées par domaine applicatif ; base de données (table, colonne), FS (fichier, contenu), Site Web (Plan de site et pages) process d’accès a l’information : naviguer / parcourir puis filtrer/trier navigation dans tout l’espace recherché Apres : Information non structurée et héterogènes : Process : Search puis filtrer / trier : navigation dans le résultat
  3. Que peut faire un moteur de recherche? BD – en complément ou en remplacement BI + navigation sur les sites web
  4. Recherche rapide « full text » Input: une zone de texte « à la Google » (un texte représentant un nom, un prénom, un identifiant quelconque, un numéro de téléphone, une adresse e-mail, etc.) Output: Résultats, surbrillance et facettes. La liste de résultats n’est pas forcement homogène, chaque résultat pouvant être affiché sous forme de « mini-fiche » L’utilisation des facettes lors de l’affichage du résultat rendra la recherche multicritères optionnelle. Recherche multicritères (recherche avancée) Input: termes de recherche par champ (nom, prénom, id, ville, code postal) Output: liste (homogène) avec résultats de la recherche Auto-complétion (suggestion des résultats) Input: toute ou partie d’un terme recherché localisé à un champ de texte à remplir Output: liste déroulante avec suggestions du terme recherché et surbrillance Facettes Groupement des résultats par catégorie en fonction de la valeur d’un champs (ex. Type Client, Profil client, Sexe) Calculées et remontées en même temps que le résultat de recherche Recherche approximative Sources des erreurs de saisie: fautes de frappe, éléments mal compris par téléphone (phonétique), noms saisis partiellement, noms composés, caractères accentués Suggestions « voulez-vous dire … » Termes se rapprochant des termes initialement cherchés et pouvant remonter potentiellement plus de résultats. Pagination Le moteur gère la pagination Chaque requête précise, en plus des critères de recherche, un indice de départ et une taille de la page La première page est, en général, remontée le plus rapidement La réponse contient le nombre total de résultats, permettant à l’IHM de proposer les liens vers toutes les pages suivantes Tri Le tri par défaut est le tri par pertinence moteur D’autres tris peuvent être demandés (alphabétique par nom, par date de naissance, etc.). Dans ce cas, le tri se fait sur l’ensemble de résultats et pas seulement sur la page en cours.
  5. Autres possibilités : - Envoi des documents en HTTP (XML, JSON) - Importer une BD - Charger un fichier CSV - Indexer des fichiers binaires (Word, Excel, PDF) - Envoi des documents en Java (SolrJ) - Crawling des sites web
  6. + highlighting ! Ne pas utiliser prefix query