64
Igor Laborie Toulouse JUG 26 Avril 2012 1 vendredi 27 avril 12

Moteurs de recherche en Java

Embed Size (px)

DESCRIPTION

Présentation au ToulouseJUG sur les Moteurs de recherches Java

Citation preview

Page 1: Moteurs de recherche en Java

Igor Laborie Toulouse JUG 26 Avril 20121vendredi 27 avril 12

Page 2: Moteurs de recherche en Java

$whoami

• Twitter: @ilaborie

2vendredi 27 avril 12

Page 3: Moteurs de recherche en Java

Intro

3vendredi 27 avril 12

Page 4: Moteurs de recherche en Java

4vendredi 27 avril 12

Page 5: Moteurs de recherche en Java

4vendredi 27 avril 12

Page 6: Moteurs de recherche en Java

5vendredi 27 avril 12

Page 7: Moteurs de recherche en Java

SQL

6vendredi 27 avril 12

Page 8: Moteurs de recherche en Java

Types de Recherche

7vendredi 27 avril 12

Page 9: Moteurs de recherche en Java

8vendredi 27 avril 12

Page 10: Moteurs de recherche en Java

9vendredi 27 avril 12

Page 11: Moteurs de recherche en Java

10vendredi 27 avril 12

Page 12: Moteurs de recherche en Java

11vendredi 27 avril 12

Page 13: Moteurs de recherche en Java

12vendredi 27 avril 12

Page 14: Moteurs de recherche en Java

13vendredi 27 avril 12

Page 15: Moteurs de recherche en Java

14vendredi 27 avril 12

Page 16: Moteurs de recherche en Java

15vendredi 27 avril 12

Page 17: Moteurs de recherche en Java

Autres recherches

• Terme

• ‘Spelling’

• Thesaurus, Synonymes

• ‘More Like This’

16vendredi 27 avril 12

Page 18: Moteurs de recherche en Java

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

18vendredi 27 avril 12

Page 20: Moteurs de recherche en Java

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

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

Analyse de Texte

21vendredi 27 avril 12

Page 23: Moteurs de recherche en Java

22vendredi 27 avril 12

Page 24: Moteurs de recherche en Java

Texte orignal

22vendredi 27 avril 12

Page 25: Moteurs de recherche en Java

Texte orignal

22vendredi 27 avril 12

Page 26: Moteurs de recherche en Java

Texte orignal

Tokenisation

22vendredi 27 avril 12

Page 27: Moteurs de recherche en Java

Texte orignal

Tokenisation

22vendredi 27 avril 12

Page 28: Moteurs de recherche en Java

Texte orignal

Tokenisation

Minuscules

22vendredi 27 avril 12

Page 29: Moteurs de recherche en Java

Texte orignal

Tokenisation

Minuscules

22vendredi 27 avril 12

Page 30: Moteurs de recherche en Java

Texte orignal

Tokenisation

Minuscules

ASCII

22vendredi 27 avril 12

Page 31: Moteurs de recherche en Java

Texte orignal

Tokenisation

Minuscules

ASCII

22vendredi 27 avril 12

Page 32: Moteurs de recherche en Java

Texte orignal

Tokenisation

Minuscules

ASCII

Mots non significatifs

22vendredi 27 avril 12

Page 33: Moteurs de recherche en Java

Texte orignal

Tokenisation

Minuscules

ASCII

Mots non significatifs

22vendredi 27 avril 12

Page 34: Moteurs de recherche en Java

Texte orignal

Tokenisation

Minuscules

ASCII

Mots non significatifs

Elision

22vendredi 27 avril 12

Page 35: Moteurs de recherche en Java

Texte orignal

Tokenisation

Minuscules

ASCII

Mots non significatifs

Elision

22vendredi 27 avril 12

Page 36: Moteurs de recherche en Java

Texte orignal

Tokenisation

Minuscules

ASCII

Mots non significatifs

Elision

Stemmatisation

22vendredi 27 avril 12

Page 37: Moteurs de recherche en Java

Texte orignal

Tokenisation

Minuscules

ASCII

Mots non significatifs

Elision

Stemmatisation

22vendredi 27 avril 12

Page 38: Moteurs de recherche en Java

Indexation

23vendredi 27 avril 12

Page 39: Moteurs de recherche en Java

24vendredi 27 avril 12

Page 40: Moteurs de recherche en Java

Indexation

24vendredi 27 avril 12

Page 41: Moteurs de recherche en Java

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

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

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

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

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

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

‘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

26vendredi 27 avril 12

Page 49: Moteurs de recherche en Java

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

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

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

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

31vendredi 27 avril 12

Page 54: Moteurs de recherche en Java

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

Comment ?

• Utilise Lucene

• Tout est REST avec JSON

• Née pour le clustering

33vendredi 27 avril 12

Page 56: Moteurs de recherche en Java

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

Extra

• River

• Percolator

• Backup

• Super facetting (Graph)

35vendredi 27 avril 12

Page 58: Moteurs de recherche en Java

Extra

• River

• Percolator

• Backup

• Super facetting (Graph)

35vendredi 27 avril 12

Page 59: Moteurs de recherche en Java

36vendredi 27 avril 12

Page 60: Moteurs de recherche en Java

37vendredi 27 avril 12

Page 61: Moteurs de recherche en Java

38vendredi 27 avril 12

Page 62: Moteurs de recherche en Java

39vendredi 27 avril 12

Page 63: Moteurs de recherche en Java

Lucene ||SolR || ElasticSearch ?

40vendredi 27 avril 12

Page 64: Moteurs de recherche en Java

Conclusion

• Démystifier l’usage d’un moteur de recherche

• Plein de fonctionnalités sympas

• Simple ?

41vendredi 27 avril 12