Upload
igor-laborie
View
2.088
Download
1
Embed Size (px)
DESCRIPTION
Présentation au ToulouseJUG sur les Moteurs de recherches Java
Citation preview
Igor Laborie Toulouse JUG 26 Avril 20121vendredi 27 avril 12
$whoami
• Twitter: @ilaborie
2vendredi 27 avril 12
Intro
3vendredi 27 avril 12
4vendredi 27 avril 12
4vendredi 27 avril 12
5vendredi 27 avril 12
SQL
6vendredi 27 avril 12
Types de Recherche
7vendredi 27 avril 12
8vendredi 27 avril 12
9vendredi 27 avril 12
10vendredi 27 avril 12
11vendredi 27 avril 12
12vendredi 27 avril 12
13vendredi 27 avril 12
14vendredi 27 avril 12
15vendredi 27 avril 12
Autres recherches
• Terme
• ‘Spelling’
• Thesaurus, Synonymes
• ‘More Like This’
16vendredi 27 avril 12
Bilan
• C’est très rapide
• Tri par pertinence
• Meilleure UX
• Comment ferait-on avec du SQL ???
17vendredi 27 avril 12
18vendredi 27 avril 12
Historique
• Projet Apache depuis 2001
• Top Level Project depuis 2005
• http://lucene.apache.org/
19vendredi 27 avril 12
Qu’est ce qu’on indexe ?
• Documents: Multimap<field,value>
• Document texte, binaire, audio, vidéo, ... avec Apache Tika
• Crawler des sites, avec Apache Nutch
20vendredi 27 avril 12
Analyse de Texte
21vendredi 27 avril 12
22vendredi 27 avril 12
Texte orignal
22vendredi 27 avril 12
Texte orignal
22vendredi 27 avril 12
Texte orignal
Tokenisation
22vendredi 27 avril 12
Texte orignal
Tokenisation
22vendredi 27 avril 12
Texte orignal
Tokenisation
Minuscules
22vendredi 27 avril 12
Texte orignal
Tokenisation
Minuscules
22vendredi 27 avril 12
Texte orignal
Tokenisation
Minuscules
ASCII
22vendredi 27 avril 12
Texte orignal
Tokenisation
Minuscules
ASCII
22vendredi 27 avril 12
Texte orignal
Tokenisation
Minuscules
ASCII
Mots non significatifs
22vendredi 27 avril 12
Texte orignal
Tokenisation
Minuscules
ASCII
Mots non significatifs
22vendredi 27 avril 12
Texte orignal
Tokenisation
Minuscules
ASCII
Mots non significatifs
Elision
22vendredi 27 avril 12
Texte orignal
Tokenisation
Minuscules
ASCII
Mots non significatifs
Elision
22vendredi 27 avril 12
Texte orignal
Tokenisation
Minuscules
ASCII
Mots non significatifs
Elision
Stemmatisation
22vendredi 27 avril 12
Texte orignal
Tokenisation
Minuscules
ASCII
Mots non significatifs
Elision
Stemmatisation
22vendredi 27 avril 12
Indexation
23vendredi 27 avril 12
24vendredi 27 avril 12
Indexation
24vendredi 27 avril 12
Indexation
Maître Corbeau, sur un arbre perché, Tenait en son bec un fromage....
1
24vendredi 27 avril 12
Indexation
Maître Corbeau, sur un arbre perché, Tenait en son bec un fromage....
1
24vendredi 27 avril 12
Indexation
Maître Corbeau, sur un arbre perché, Tenait en son bec un fromage....
1
Termes Documents
maitr 1
corbeau 1
arbre 1
perch 1
ten 1
...
24vendredi 27 avril 12
Indexation
Maître Corbeau, sur un arbre perché, Tenait en son bec un fromage....
1
Maître Corbeau et Le Renard, une fable de Jean de la Fontaine, ...
2
Termes Documents
maitr 1
corbeau 1
arbre 1
perch 1
ten 1
...
24vendredi 27 avril 12
Indexation
Maître Corbeau, sur un arbre perché, Tenait en son bec un fromage....
1
Maître Corbeau et Le Renard, une fable de Jean de la Fontaine, ...
2
Termes Documents
maitr 1
corbeau 1
arbre 1
perch 1
ten 1
...
24vendredi 27 avril 12
Termes Documents
maitr 1, 2
corbeau 1, 2
arbre 1
perch 1
ten 1
...
Indexation
Maître Corbeau, sur un arbre perché, Tenait en son bec un fromage....
1
Maître Corbeau et Le Renard, une fable de Jean de la Fontaine, ...
2
24vendredi 27 avril 12
‘Problèmes’ de Lucene
• Comment fait on avec une architecture distribué ?
• Peut on utiliser Lucene avec un autre langage ?
25vendredi 27 avril 12
26vendredi 27 avril 12
Historique
• Débute en 2004 chez CNET Networks
• Donné à Apache en 2006
• http://lucene.apache.org/solr/
27vendredi 27 avril 12
Comment
• Utilise Lucene
• REST avec JSON et XML
• http://localhost:8080/solr/select?q=<query>
• http://localhost:8080/solr/update avec XML en POST
28vendredi 27 avril 12
Principes
• Configuration générale : solrconfig.xml
• Configuration des types et des champs: schema.xml
• Configuration majoritairement statique
• Application Web classique
29vendredi 27 avril 12
Clustering
• Partition de données «Sharding»
• Rôle des nœuds
• écriture
• lecture
• mixte
30vendredi 27 avril 12
31vendredi 27 avril 12
Historique
• Projet récent (2010)
• Créer par Shay Banon (@kimchy)
• http://www.elasticsearch.org/
32vendredi 27 avril 12
Comment ?
• Utilise Lucene
• Tout est REST avec JSON
• Née pour le clustering
33vendredi 27 avril 12
Dynamique
• Administration par REST
• Pas besoin de connaitre la structure des documents.
• mais, pas toujours.
• Clustering trivial
34vendredi 27 avril 12
Extra
• River
• Percolator
• Backup
• Super facetting (Graph)
35vendredi 27 avril 12
Extra
• River
• Percolator
• Backup
• Super facetting (Graph)
35vendredi 27 avril 12
36vendredi 27 avril 12
37vendredi 27 avril 12
38vendredi 27 avril 12
39vendredi 27 avril 12
Lucene ||SolR || ElasticSearch ?
40vendredi 27 avril 12
Conclusion
• Démystifier l’usage d’un moteur de recherche
• Plein de fonctionnalités sympas
• Simple ?
41vendredi 27 avril 12