1 Search::Indexer Indexation plein-texte en Perl

Slides:



Advertisements
Présentations similaires
Les solutions de recherche avec Drupal
Advertisements

Module Systèmes d’exploitation
HTML Abda Anne Plan Présentation Structure Texte Listes Images Liens Tableaux Formulaires.
Tests et Validation du logiciel
Quelle stratégie adopter pour la recherche en Entreprise ?
Je lis, j’écris Objectif du logiciel S'entraîner à saisir précisément un mot, une expression, une phrase, un texte,
Lucene une API d'indexation de texte. stocke les informations dans une structure d'index inversé. Les termes renvoient sur les documents qui les contiennent.
Stratégie Microsoft sur la Recherche en Entreprise.
Une solution personnalisable et extensible
Présentation Biblio. (DESS IIR) Les moteurs de recherche Web
1 UMLV 1. Introduction 2. Hachage ouvert 3. Hachage fermé 4. Implémentation des fonctions Méthodes de hachage.
Approfondissement du langage
Cours Visual Basic pour Application
Les API Sudoc Le Sudoc autrement…
> a patent search service supplied by Patents & Technology Surveys Ltd PROFESSIONAL ONLINE PATENT INFORMATION SERVICE.
GED Masters: Gestion Électronique de Documents
SECURITE DU SYSTEME D’INFORMATION (SSI)
Aide à la Recherche Bibliographique sur le WEB Hatem BEN ROMDHANE (URSAM) ENIT Janvier 2003.
Archimède : dépôt institutionnel de la Bibliothèque de lUniversité Laval Par Rida Benjelloun Chef de la section recherche.
Bibliothèque standard du C++
Travail Pratique – Conception et analyse d’algorithmes
Centre d’Excellence en Technologies de l’Information et de la Communication Moteurs de recherche Aspects techniques et retours d’expérience Christophe.
Ordre du jour Copernic, portrait de lentreprise Copernic Enterprise Search Description du produit Fonctionnement Spécificités techniques Options offertes.
1 Objectifs de ce cours (I21) Cours JAVA (I21) -Licence 1 Semestre 2 / Y.Laborde Résumé du cours précédent.
Google, un moteur de recherche comme les autres ?
A L I M E N T A T I O N A G R I C U L T U R E E N V I R O N N E M E N T Réseau BD 11/12/08 Hibernate Search Réunion dunité – 23/10/2008 Erik Kimmel.
Moteur de recherche d’information
PostGIS: Index, Opérateurs et Fonctions
Moteur de recherche d’information
Projet Lucene 22 avril 2011 Acquisition de Connaissances 2
CSI2520, Hiver 2007 Python Un langage de programmation par scripting et plus…
Eric Laporte Institut Gaspard-Monge Université de Marne-la-Vallée France Introduction à Perl.
Démonstrateur Lingway
PHP Géant Aurélien. PHP (Hypertext Preprocessor) Langage de scripts libre Permet produire des pages Web dynamiques dispose d'un très grand nombre d'API(Application.
Comment réaliser une recherche bibliographique ?
Chapitre 9 Les sous-programmes.
Moteurs de recherche Modex Web Modex Web 441 professeur Go
CSI 1502 Principes fondamentaux de conception de logiciels
La face cachée des systèmes de recherche Martin Bouchard, président Janvier 2003.
Recherche par mots-clés vs recherche en langue naturelle.
Conversion de fichiers

Les techniques des moteurs de recherche
Développement Web Open Source haXe et les outils « open source » Première partie.
PHP & My SQL.
CM 2 – Traitement de Texte
Les Moteurs de recherche:
A L I M E N T A T I O N A G R I C U L T U R E E N V I R O N N E M E N T Réseau BD 11/12/08 Fonctionnalités et limites d’outils d’indexation et de recherche.
1 F o r m a t i o n A R S FTP anonyme, Archie 2 F o r m a t i o n A R S FTP ANONYMOUS m Premier service d'accès à des documents publics. m Repose très.
 Syntaxe du langage PHP
1 Les Moteurs de Recherche Décembre Définitions et utilité  Un moteur de recherche est un logiciel robot qui parcourt en permanence le réseau.
MIGRATION DE BASE DE DONNÉES la méthode générale
LA RECHERCHE DOCUMENTAIRE
Improving large-scale search engines with semantic annotations Damaris Fuentes-Lorenzo, Norberto Fernández, Jesús A. Fisteus, Luis Sánchez.
1 File::Tabular Recherche et édition dans des fichiers tabulaires
MJ. Blin et M. CsernelPoleInfo31 XML et ses environnements Documents XML bien formés Prologue Arbre d'éléments Attributs Commentaires Entités internes.
Dominique LAURENT Patrick SEGUELA
C# de plus près.  Ce sont globalement les mêmes que Java : ◦ Int(int16, int32), float, double, bool,…  Les classe « communes » sont également les mêmes.
Recherche d’information
1 INFOR 101 Chapitre 4 Marianne Morris. 2 Révision de chapitre 3 Algorithmes Sequential Search Selection Sort Binary Search Ordre de magnitude  (n) Mesurer.
CSI2520 Un langage de programmation par scripting orienté-objet (et fonctionnel)
Asynchronous JavaScript And XML AJAX C. Petitpierre
SEO le Référencement Naturel
Équipe ISLanD Laboratoire GREYC Université de Caen / Basse-Normandie Des outils pour chercher sur la Toile Fête de la Science 2005.
Méthodes de recherche sur Internet
ANNEHEIM Geoffrey21/03/ Protocole de communication Socket TCP/IP Afin que MyCrawler fonctionne de façon optimale, une configuration de deux machines.
Cours n°2 Implémentation et exploitation
lundi 21 septembre Au Boulot! la première activité: Notez les métiers coiffeur/coiffeuse EXTRA! What do you think “au chomage” means? infirmier/infirmière.
Tuteur : Jean-Philippe Prost Soutenance de Projet Licence Professionnelle Assistant de Projet Informatique Développement d’Applications E-Business Année.
Site Web Sophie Lieunard Le 07 avril 2011 (séance ouverte)
Transcription de la présentation:

1 Search::Indexer Indexation plein-texte en Perl

LD, PJGE, juin Indexation plein-texte veaux vaches cochons couvée 1, 2, 5, 77, 78, 79, 123 3, 7, 34, 56 1, 2, 3, 4, 19 4, 5, 6, 7, 55, TermesListes inversesDocuments (veaux ET vaches) OU cochons

LD, PJGE, juin Information positionnelle veaux vaches 1, 2, 5, 77, 78, 79, 123 3, 7, 34, TermesListes inversesDocuments « adieu, veaux, vaches »veaux NEAR vaches 6, 134, , 99, 107, 111 Positions des mots

LD, PJGE, juin Quelques logiciels MS Longhorn MacIntosh Google Desktop Copernic COVEO Fulcrum Livelink HtDig Google Appliance Altavista Desktop Entreprise Web Boîte à outils Lucene MySQL dtSearch Swish-E Search::Indexer

LD, PJGE, juin Boîte à outils u Moteur général d’indexation Adaptable pour applications ad hoc u À fournir par composants externes : Spider (injection des documents à indexer) Conversions de formats (.doc,.html, etc. .txt) Couche de présentation des résultats

LD, PJGE, juin Autres modules Perl u Text::Freesearch Compact, fonctions de base u Search::InvertedIndex Pas d'information sur positions u Plucene Très complet > 60 classes (+ dépendances) problèmes de lenteur u Search::Kinosearch alpha, chargé sur CPAN le 8 juin 2005

7 Search::Indexer

LD, PJGE, juin Structure u Analyseur regex + callback u Stockage index: 3 fichiers BerkeleyDB Listes d’entiers compressés (pack ‘w’) u Requêtes booléennes: Search::QueryParser

LD, PJGE, juin API use Search::Indexer; my $ix = new Search::Indexer( dir => $dir, writeMode => 1, wregex => qr/\w+/, wfilter => sub {...}); $ix->add($docId, docContent($docId)); $ix->remove($docId);

LD, PJGE, juin API (suite) $r = $ix->search('+veaux –vaches'); $r = $ix->search('chat ET (rat OU souris)'); $r = $ix->search(' "phrase exacte" = foreach my $docId { my $score = $r->{scores}{$docId}; print "DOC $docId: $score\n"; }

LD, PJGE, juin API (suite) foreach my $docId { = $ix->excerpts(docContent($docId), $r->{regex}); print join(" / "\n"; } Extraits :...devenu entre-temps la direction du logement (ci- après : la DL), a maintenu l’allocation de logement pour la période du 1er avril /... A/1772/2004 TA/S2.THE (TPE) ALLOCATION DE LOGEMENT; LOCATAIRE; PRINCIPE DE LA BONNE F... /... la DL de verser rétroactivement l'allocation de logement. Demande incomplète (art. 25 al 1... /...ge non compris. Ils perçoivent une allocation de logement mensuelle de CHF depuis le 1...

LD, PJGE, juin Implémentation : new() # word => wordId $self->{ixwDb} = tie %{$self->{ixw}}, 'BerkeleyDB::Btree',... # wordId => [docId1 => nOccur1,...] $self->{ixdDb} = tie %{$self->{ixd}}, 'BerkeleyDB::Hash',... # (docId, wordId) => [pos1, pos2,...] $self->{ixpDb} = tie %{$self->{ixp}}, 'BerkeleyDB::Btree',..

LD, PJGE, juin Implémentation : add() my %positions; for (my $nwords=1; $buf =~ /$self->{wregex}/g; $nwords++) { my $word = $self->{wfilter}->($&) or next; my $wordId = $self->{ixw}{$word}; $nwords; } while (my ($wd, $p) = each %positions) { $self->{ixd}{$wd}.= pack('wC', $docId, $self->{ixp}{$docId, $wd} = }

LD, PJGE, juin Implémentation : search() $scores = {unpack '(wC)*', $self->{ixd}{$wd}}; = keys %$scores; my $nDocs = $self->{ixd}{NDOCS}; if { my $coeff = log($nDocs + * 100; $scores->{$_} = int($coeff * $scores->{$_}) } # AND, OR : union/intersection de %$scores

LD, PJGE, juin Métriques u Search::Indexer 819 lignes (dont 222 POD) 5 méthodes 10 options pour new() u Search::QueryParser 480 lignes (dont 228 POD) 4 méthodes 7 options pour new() u env. 3,5 fois plus rapide que Plucene

LD, PJGE, juin TODO liste u verrous, concurrence u calcul des combinaisons de scores u comparaisons de performances u opérateurs NEAR et ^n (boost) u format des index (compression)

17 Démo...