4. Les moteurs de recherche sont partout
-- LucidWorks (http://www.lucidworks.com/)
5. 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
6. Recherche rapide
Recherche rapide
«« full-text »
full-text »
Auto-complétion
Auto-complétion
(suggestions de résultats)
(suggestions de résultats)
Surbrillance gérée par le
Surbrillance gérée par le
moteur
moteur
Accès aux recherches
Accès aux recherches
multicritères
multicritères
Recherche approximative et
Recherche approximative et
suggestions d’orthographe
suggestions d’orthographe
Nombre total
Nombre total
des résultats
des résultats
Résultats affichés
Résultats affichés
sous la forme de
sous la forme de
«« mini-fiches »
mini-fiches »
Navigation par facettes
Navigation par facettes
- - Calculées avec les résultats
Calculées avec les résultats
de recherche
de recherche
- - Filtres de recherche à
Filtres de recherche à
renseigner apostériori
renseigner apostériori
Pagination gérée par le moteur
Pagination gérée par le moteur
Tri sur l’ensemble des
Tri sur l’ensemble des
résultats (pas
résultats (pas
seulement page en
seulement page en
cours)
cours)
7. Use case : applications de gestion
•
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
8. Use case : recherche sémantique
••Identificationde la langue
Identification de la langue
••Segmentation––dans les langues sans
Segmentation dans les langues sans
espaces (chinois, japonais, coréen)
espaces (chinois, japonais, coréen)
••Décomposerles mots ––dans les langues qui
Décomposer les mots dans les langues qui
composent naturellement les mots (allemand,
composent naturellement les mots (allemand,
néerlandais, coréen
néerlandais, coréen
••Extractiond’entités : :noms, endroits,
Extraction d’entités noms, endroits,
entreprises, ... (ex. j’ai acheté du pain ààla
entreprises, ... (ex. j’ai acheté du pain la
boulangerie du Monsieur Du Pain)
boulangerie du Monsieur Du Pain)
-- Basis Technology (http://www.basistech.com/text-analytics/rosette/)
9. Use case : agrégations
– Groupement par un critère (ex. valeur du champ type
de garantie, ou thème, ou catégorie) et calcul des
statistiques sur un autre champ (ex. total du CA)
9
10. NoSQL ?
• En général
–
–
–
–
BDs non-traditionnelle
N’utilisent pas / ne sont pas construites autour de SQL
Distribués, architecture résistante aux pannes
Modèle allégé pour permettre la scalabilité horizontale
• Pour un moteur de recherche :
–
–
–
–
–
–
Indexation et recherche distribuées
Real-time Get, Versioning et Optimistic Locking
Durable updates (transaction log)
HA sans SPOF
Near Real-time Search
Options “schema-less”
11. NoSQL, Moteurs de Recherche et
SGBDs classiques
Synchronisation
Synchronisation
temps réel
temps réel
Fluidité des applications
Fluidité des applications
grâce ààla meilleure
grâce la meilleure
performance
performance
Accès quasi-direct ààla
Accès quasi-direct la
donnée recherchée
donnée recherchée
Facettes simples
Facettes simples
ou complexes
ou complexes
Alternative aux outils
Alternative aux outils
BI traditionnels
BI traditionnels
Suggestions temps
Suggestions temps
réel des termes àà
réel des termes
chercher
chercher
12. ••Backend Elasticsearch
Back end Elasticsearch
••Frontend Javascript
Front end Javascript
••Applicationdéveloppée
Application développée
en 8h
en 8h
••#nosql
#nosql
-- http://javaetmoi.com/2013/11/musicbrainz-elasticsearch-angularjs-openshift/
13. Big Data?
• Ensemble des données
tellement larges qu’il est
difficile de les exploiter
avec des bases de données
ou des outils traditionnels
• Les problématiques
incluent : l’acquisition, le
nettoyage, le stockage, la
recherche, le partage, le
transfert, l’analyse et la
visualisation
14. Big Data?
• Big Data et le marketing :-)
You don’t have a "Big Data"
problem, you have a big
"data problem" -- Twitter
• Ensemble des données
tellement larges qu’il est
difficile de les exploiter
avec des bases de données
ou des outils traditionnels
• Les problématiques
incluent : l’acquisition, le
nettoyage, le stockage, la
recherche, le partage, le
transfert, l’analyse et la
visualisation
15. Big Data en France
• « Tous les secteurs économiques, du commerce au
secteur automobile en passant par le secteur
énergétique, tous les domaines de la vie quotidienne
(santé, éducation...) sont concernés.»
• « Les enjeux sont considérables, d’abord sur un plan
économique : on évalue à 8% du PIB européen la
création de valeur liée aux Big Data à l’horizon 2020.»
• « L’objectif du plan "Big Data" est de faire de la
France la référence mondiale dans ce domaine. »
-- http://www.redressement-productif.gouv.fr/files/la-nouvelle-france-industrielle.pdf
16. Big Data en France
• « Tous les secteurs économiques, du commerce au
secteur automobile en passant par le secteur
énergétique, tous les domaines de la vie quotidienne
(santé, éducation...) sont concernés.»
• « Les enjeux sont considérables, d’abord sur un plan
économique : on évalue à 8% du PIB européen la
création de valeur liée aux Big Data à l’horizon 2020.»
• « L’objectif du plan "Big Data" est de faire de la France
la référence mondiale dans ce domaine. »
-- http://www.redressement-productif.gouv.fr/files/la-nouvelle-france-industrielle.pdf
17. Use case : analyse des données
-- http://www.elasticsearch.org/overview/kibana/
18. Use case : sémantique et visualisation
-- http://search.carrot2.org/stable/search
19. Elasticsearch @Github ::
Elasticsearch @Github
••20TB de données
20 TB de données
••1.3milliards de fichiers
1.3 milliards de fichiers
••130milliards de lignes
130 milliards de lignes
de code
de code
20. Search @Linkedin ::
Search @Linkedin
••238millions d’utilisateurs
238 millions d’utilisateurs
••5,7milliards de recherches de
5,7 milliards de recherches de
professionnels en 2012
professionnels en 2012
21. Big Data @Amazon ::
Big Data @Amazon
••Picsde 200 articles
Pics de 200 articles
vendus par seconde
vendus par seconde
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
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.
Real-time Get + Versioning et Optimistic Locking => read-update-write functionality that ensures noconflicting changes were made concurrently by other clients
What is NoSQL?
- Wikipedia: A NoSQL database provides a mechanism for storage and retrieval of data that use looser consistency models than traditional relational databases in order to achieve horizontal scaling and higher availability. Some authors refer to them as "Not only SQL" to emphasize that some NoSQL systems do allow SQL-like query language to be used.
- non-traditional datastores
Doesn’t use / isn’t designed around SQL
May not give full ACID guarantees (offers other advantages such as greater scalability as a tradeoff)
Distributed, fault-tolerance architecture