Moteurs de recherche en Java
-
Upload
igor-laborie -
Category
Documents
-
view
2.089 -
download
1
description
Transcript of Moteurs de recherche en Java
![Page 1: Moteurs de recherche en Java](https://reader034.fdocument.pub/reader034/viewer/2022051209/548fef80b47959072a8b4bec/html5/thumbnails/1.jpg)
Igor Laborie Toulouse JUG 26 Avril 20121vendredi 27 avril 12
![Page 2: Moteurs de recherche en Java](https://reader034.fdocument.pub/reader034/viewer/2022051209/548fef80b47959072a8b4bec/html5/thumbnails/2.jpg)
$whoami
• Twitter: @ilaborie
2vendredi 27 avril 12
![Page 3: Moteurs de recherche en Java](https://reader034.fdocument.pub/reader034/viewer/2022051209/548fef80b47959072a8b4bec/html5/thumbnails/3.jpg)
Intro
3vendredi 27 avril 12
![Page 4: Moteurs de recherche en Java](https://reader034.fdocument.pub/reader034/viewer/2022051209/548fef80b47959072a8b4bec/html5/thumbnails/4.jpg)
4vendredi 27 avril 12
![Page 5: Moteurs de recherche en Java](https://reader034.fdocument.pub/reader034/viewer/2022051209/548fef80b47959072a8b4bec/html5/thumbnails/5.jpg)
4vendredi 27 avril 12
![Page 6: Moteurs de recherche en Java](https://reader034.fdocument.pub/reader034/viewer/2022051209/548fef80b47959072a8b4bec/html5/thumbnails/6.jpg)
5vendredi 27 avril 12
![Page 7: Moteurs de recherche en Java](https://reader034.fdocument.pub/reader034/viewer/2022051209/548fef80b47959072a8b4bec/html5/thumbnails/7.jpg)
SQL
6vendredi 27 avril 12
![Page 8: Moteurs de recherche en Java](https://reader034.fdocument.pub/reader034/viewer/2022051209/548fef80b47959072a8b4bec/html5/thumbnails/8.jpg)
Types de Recherche
7vendredi 27 avril 12
![Page 9: Moteurs de recherche en Java](https://reader034.fdocument.pub/reader034/viewer/2022051209/548fef80b47959072a8b4bec/html5/thumbnails/9.jpg)
8vendredi 27 avril 12
![Page 10: Moteurs de recherche en Java](https://reader034.fdocument.pub/reader034/viewer/2022051209/548fef80b47959072a8b4bec/html5/thumbnails/10.jpg)
9vendredi 27 avril 12
![Page 11: Moteurs de recherche en Java](https://reader034.fdocument.pub/reader034/viewer/2022051209/548fef80b47959072a8b4bec/html5/thumbnails/11.jpg)
10vendredi 27 avril 12
![Page 12: Moteurs de recherche en Java](https://reader034.fdocument.pub/reader034/viewer/2022051209/548fef80b47959072a8b4bec/html5/thumbnails/12.jpg)
11vendredi 27 avril 12
![Page 13: Moteurs de recherche en Java](https://reader034.fdocument.pub/reader034/viewer/2022051209/548fef80b47959072a8b4bec/html5/thumbnails/13.jpg)
12vendredi 27 avril 12
![Page 14: Moteurs de recherche en Java](https://reader034.fdocument.pub/reader034/viewer/2022051209/548fef80b47959072a8b4bec/html5/thumbnails/14.jpg)
13vendredi 27 avril 12
![Page 15: Moteurs de recherche en Java](https://reader034.fdocument.pub/reader034/viewer/2022051209/548fef80b47959072a8b4bec/html5/thumbnails/15.jpg)
14vendredi 27 avril 12
![Page 16: Moteurs de recherche en Java](https://reader034.fdocument.pub/reader034/viewer/2022051209/548fef80b47959072a8b4bec/html5/thumbnails/16.jpg)
15vendredi 27 avril 12
![Page 17: Moteurs de recherche en Java](https://reader034.fdocument.pub/reader034/viewer/2022051209/548fef80b47959072a8b4bec/html5/thumbnails/17.jpg)
Autres recherches
• Terme
• ‘Spelling’
• Thesaurus, Synonymes
• ‘More Like This’
16vendredi 27 avril 12
![Page 18: Moteurs de recherche en Java](https://reader034.fdocument.pub/reader034/viewer/2022051209/548fef80b47959072a8b4bec/html5/thumbnails/18.jpg)
Bilan
• C’est très rapide
• Tri par pertinence
• Meilleure UX
• Comment ferait-on avec du SQL ???
17vendredi 27 avril 12
![Page 19: Moteurs de recherche en Java](https://reader034.fdocument.pub/reader034/viewer/2022051209/548fef80b47959072a8b4bec/html5/thumbnails/19.jpg)
18vendredi 27 avril 12
![Page 20: Moteurs de recherche en Java](https://reader034.fdocument.pub/reader034/viewer/2022051209/548fef80b47959072a8b4bec/html5/thumbnails/20.jpg)
Historique
• Projet Apache depuis 2001
• Top Level Project depuis 2005
• http://lucene.apache.org/
19vendredi 27 avril 12
![Page 21: Moteurs de recherche en Java](https://reader034.fdocument.pub/reader034/viewer/2022051209/548fef80b47959072a8b4bec/html5/thumbnails/21.jpg)
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
![Page 22: Moteurs de recherche en Java](https://reader034.fdocument.pub/reader034/viewer/2022051209/548fef80b47959072a8b4bec/html5/thumbnails/22.jpg)
Analyse de Texte
21vendredi 27 avril 12
![Page 23: Moteurs de recherche en Java](https://reader034.fdocument.pub/reader034/viewer/2022051209/548fef80b47959072a8b4bec/html5/thumbnails/23.jpg)
22vendredi 27 avril 12
![Page 24: Moteurs de recherche en Java](https://reader034.fdocument.pub/reader034/viewer/2022051209/548fef80b47959072a8b4bec/html5/thumbnails/24.jpg)
Texte orignal
22vendredi 27 avril 12
![Page 25: Moteurs de recherche en Java](https://reader034.fdocument.pub/reader034/viewer/2022051209/548fef80b47959072a8b4bec/html5/thumbnails/25.jpg)
Texte orignal
22vendredi 27 avril 12
![Page 26: Moteurs de recherche en Java](https://reader034.fdocument.pub/reader034/viewer/2022051209/548fef80b47959072a8b4bec/html5/thumbnails/26.jpg)
Texte orignal
Tokenisation
22vendredi 27 avril 12
![Page 27: Moteurs de recherche en Java](https://reader034.fdocument.pub/reader034/viewer/2022051209/548fef80b47959072a8b4bec/html5/thumbnails/27.jpg)
Texte orignal
Tokenisation
22vendredi 27 avril 12
![Page 28: Moteurs de recherche en Java](https://reader034.fdocument.pub/reader034/viewer/2022051209/548fef80b47959072a8b4bec/html5/thumbnails/28.jpg)
Texte orignal
Tokenisation
Minuscules
22vendredi 27 avril 12
![Page 29: Moteurs de recherche en Java](https://reader034.fdocument.pub/reader034/viewer/2022051209/548fef80b47959072a8b4bec/html5/thumbnails/29.jpg)
Texte orignal
Tokenisation
Minuscules
22vendredi 27 avril 12
![Page 30: Moteurs de recherche en Java](https://reader034.fdocument.pub/reader034/viewer/2022051209/548fef80b47959072a8b4bec/html5/thumbnails/30.jpg)
Texte orignal
Tokenisation
Minuscules
ASCII
22vendredi 27 avril 12
![Page 31: Moteurs de recherche en Java](https://reader034.fdocument.pub/reader034/viewer/2022051209/548fef80b47959072a8b4bec/html5/thumbnails/31.jpg)
Texte orignal
Tokenisation
Minuscules
ASCII
22vendredi 27 avril 12
![Page 32: Moteurs de recherche en Java](https://reader034.fdocument.pub/reader034/viewer/2022051209/548fef80b47959072a8b4bec/html5/thumbnails/32.jpg)
Texte orignal
Tokenisation
Minuscules
ASCII
Mots non significatifs
22vendredi 27 avril 12
![Page 33: Moteurs de recherche en Java](https://reader034.fdocument.pub/reader034/viewer/2022051209/548fef80b47959072a8b4bec/html5/thumbnails/33.jpg)
Texte orignal
Tokenisation
Minuscules
ASCII
Mots non significatifs
22vendredi 27 avril 12
![Page 34: Moteurs de recherche en Java](https://reader034.fdocument.pub/reader034/viewer/2022051209/548fef80b47959072a8b4bec/html5/thumbnails/34.jpg)
Texte orignal
Tokenisation
Minuscules
ASCII
Mots non significatifs
Elision
22vendredi 27 avril 12
![Page 35: Moteurs de recherche en Java](https://reader034.fdocument.pub/reader034/viewer/2022051209/548fef80b47959072a8b4bec/html5/thumbnails/35.jpg)
Texte orignal
Tokenisation
Minuscules
ASCII
Mots non significatifs
Elision
22vendredi 27 avril 12
![Page 36: Moteurs de recherche en Java](https://reader034.fdocument.pub/reader034/viewer/2022051209/548fef80b47959072a8b4bec/html5/thumbnails/36.jpg)
Texte orignal
Tokenisation
Minuscules
ASCII
Mots non significatifs
Elision
Stemmatisation
22vendredi 27 avril 12
![Page 37: Moteurs de recherche en Java](https://reader034.fdocument.pub/reader034/viewer/2022051209/548fef80b47959072a8b4bec/html5/thumbnails/37.jpg)
Texte orignal
Tokenisation
Minuscules
ASCII
Mots non significatifs
Elision
Stemmatisation
22vendredi 27 avril 12
![Page 38: Moteurs de recherche en Java](https://reader034.fdocument.pub/reader034/viewer/2022051209/548fef80b47959072a8b4bec/html5/thumbnails/38.jpg)
Indexation
23vendredi 27 avril 12
![Page 39: Moteurs de recherche en Java](https://reader034.fdocument.pub/reader034/viewer/2022051209/548fef80b47959072a8b4bec/html5/thumbnails/39.jpg)
24vendredi 27 avril 12
![Page 40: Moteurs de recherche en Java](https://reader034.fdocument.pub/reader034/viewer/2022051209/548fef80b47959072a8b4bec/html5/thumbnails/40.jpg)
Indexation
24vendredi 27 avril 12
![Page 41: Moteurs de recherche en Java](https://reader034.fdocument.pub/reader034/viewer/2022051209/548fef80b47959072a8b4bec/html5/thumbnails/41.jpg)
Indexation
Maître Corbeau, sur un arbre perché, Tenait en son bec un fromage....
1
24vendredi 27 avril 12
![Page 42: Moteurs de recherche en Java](https://reader034.fdocument.pub/reader034/viewer/2022051209/548fef80b47959072a8b4bec/html5/thumbnails/42.jpg)
Indexation
Maître Corbeau, sur un arbre perché, Tenait en son bec un fromage....
1
24vendredi 27 avril 12
![Page 43: Moteurs de recherche en Java](https://reader034.fdocument.pub/reader034/viewer/2022051209/548fef80b47959072a8b4bec/html5/thumbnails/43.jpg)
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
![Page 44: Moteurs de recherche en Java](https://reader034.fdocument.pub/reader034/viewer/2022051209/548fef80b47959072a8b4bec/html5/thumbnails/44.jpg)
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
![Page 45: Moteurs de recherche en Java](https://reader034.fdocument.pub/reader034/viewer/2022051209/548fef80b47959072a8b4bec/html5/thumbnails/45.jpg)
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
![Page 46: Moteurs de recherche en Java](https://reader034.fdocument.pub/reader034/viewer/2022051209/548fef80b47959072a8b4bec/html5/thumbnails/46.jpg)
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
![Page 47: Moteurs de recherche en Java](https://reader034.fdocument.pub/reader034/viewer/2022051209/548fef80b47959072a8b4bec/html5/thumbnails/47.jpg)
‘Problèmes’ de Lucene
• Comment fait on avec une architecture distribué ?
• Peut on utiliser Lucene avec un autre langage ?
25vendredi 27 avril 12
![Page 48: Moteurs de recherche en Java](https://reader034.fdocument.pub/reader034/viewer/2022051209/548fef80b47959072a8b4bec/html5/thumbnails/48.jpg)
26vendredi 27 avril 12
![Page 49: Moteurs de recherche en Java](https://reader034.fdocument.pub/reader034/viewer/2022051209/548fef80b47959072a8b4bec/html5/thumbnails/49.jpg)
Historique
• Débute en 2004 chez CNET Networks
• Donné à Apache en 2006
• http://lucene.apache.org/solr/
27vendredi 27 avril 12
![Page 50: Moteurs de recherche en Java](https://reader034.fdocument.pub/reader034/viewer/2022051209/548fef80b47959072a8b4bec/html5/thumbnails/50.jpg)
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
![Page 51: Moteurs de recherche en Java](https://reader034.fdocument.pub/reader034/viewer/2022051209/548fef80b47959072a8b4bec/html5/thumbnails/51.jpg)
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
![Page 52: Moteurs de recherche en Java](https://reader034.fdocument.pub/reader034/viewer/2022051209/548fef80b47959072a8b4bec/html5/thumbnails/52.jpg)
Clustering
• Partition de données «Sharding»
• Rôle des nœuds
• écriture
• lecture
• mixte
30vendredi 27 avril 12
![Page 53: Moteurs de recherche en Java](https://reader034.fdocument.pub/reader034/viewer/2022051209/548fef80b47959072a8b4bec/html5/thumbnails/53.jpg)
31vendredi 27 avril 12
![Page 54: Moteurs de recherche en Java](https://reader034.fdocument.pub/reader034/viewer/2022051209/548fef80b47959072a8b4bec/html5/thumbnails/54.jpg)
Historique
• Projet récent (2010)
• Créer par Shay Banon (@kimchy)
• http://www.elasticsearch.org/
32vendredi 27 avril 12
![Page 55: Moteurs de recherche en Java](https://reader034.fdocument.pub/reader034/viewer/2022051209/548fef80b47959072a8b4bec/html5/thumbnails/55.jpg)
Comment ?
• Utilise Lucene
• Tout est REST avec JSON
• Née pour le clustering
33vendredi 27 avril 12
![Page 56: Moteurs de recherche en Java](https://reader034.fdocument.pub/reader034/viewer/2022051209/548fef80b47959072a8b4bec/html5/thumbnails/56.jpg)
Dynamique
• Administration par REST
• Pas besoin de connaitre la structure des documents.
• mais, pas toujours.
• Clustering trivial
34vendredi 27 avril 12
![Page 57: Moteurs de recherche en Java](https://reader034.fdocument.pub/reader034/viewer/2022051209/548fef80b47959072a8b4bec/html5/thumbnails/57.jpg)
Extra
• River
• Percolator
• Backup
• Super facetting (Graph)
35vendredi 27 avril 12
![Page 58: Moteurs de recherche en Java](https://reader034.fdocument.pub/reader034/viewer/2022051209/548fef80b47959072a8b4bec/html5/thumbnails/58.jpg)
Extra
• River
• Percolator
• Backup
• Super facetting (Graph)
35vendredi 27 avril 12
![Page 59: Moteurs de recherche en Java](https://reader034.fdocument.pub/reader034/viewer/2022051209/548fef80b47959072a8b4bec/html5/thumbnails/59.jpg)
36vendredi 27 avril 12
![Page 60: Moteurs de recherche en Java](https://reader034.fdocument.pub/reader034/viewer/2022051209/548fef80b47959072a8b4bec/html5/thumbnails/60.jpg)
37vendredi 27 avril 12
![Page 61: Moteurs de recherche en Java](https://reader034.fdocument.pub/reader034/viewer/2022051209/548fef80b47959072a8b4bec/html5/thumbnails/61.jpg)
38vendredi 27 avril 12
![Page 62: Moteurs de recherche en Java](https://reader034.fdocument.pub/reader034/viewer/2022051209/548fef80b47959072a8b4bec/html5/thumbnails/62.jpg)
39vendredi 27 avril 12
![Page 63: Moteurs de recherche en Java](https://reader034.fdocument.pub/reader034/viewer/2022051209/548fef80b47959072a8b4bec/html5/thumbnails/63.jpg)
Lucene ||SolR || ElasticSearch ?
40vendredi 27 avril 12
![Page 64: Moteurs de recherche en Java](https://reader034.fdocument.pub/reader034/viewer/2022051209/548fef80b47959072a8b4bec/html5/thumbnails/64.jpg)
Conclusion
• Démystifier l’usage d’un moteur de recherche
• Plein de fonctionnalités sympas
• Simple ?
41vendredi 27 avril 12