Présentation tenue à Lorraine JUG (http://lorrainejug.blogspot.fr/2012/11/moteurs-de-recherche-lucene-en-action.html):
<< Apache Lucene, la fameuse technologie pour l’indexation, la recherche et l’analyse du texte est la base de plusieurs serveurs Open Source. La présentation détaillera Solr et ElasticSearch sous la forme "Tools in Action" - démonstrations en direct des différents outils.
Allant au-delà du tutorial, cette session vous permettra de découvrir comment mettre en place des serveurs de recherche pertinents, robustes, performants et évolutifs en utilisant des approches NoSQL, Apache Lucene et bibliothèques Java Open Source. Des subtilités sur l’analyse du texte, la recherche approximative, l’auto-complétion seront abordées afin de montrer les forces mais aussi les limites de la magie Lucene.
Lucian est développeur, architecte et responsable des développements ayant évolué, depuis douze ans, du projet de recherche au grand éditeur de logiciels en passant par la start-up.
Depuis 2010 Lucian a acquis, à travers ses missions, une expertise sur les architectures NoSQL et les moteurs de recherche pour l’entreprise (Enterprise Search), expertise qu’il partage dans différents barcamps et conférences. >>
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
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
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
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
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
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
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
Que peut faire un moteur de recherche? BD – en complément ou en remplacement BI + navigation sur les sites web
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.
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