Moteurs de recherche en Java

Preview:

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