MG4J – Managing GigaBytes for Java Indicizzazione ed interrogazione di basi documentali Ilaria Bordino Yahoo! Research, Barcelona.

Slides:



Advertisements
Presentazioni simili
Programmazione ad oggetti
Advertisements

Strutture dati per insiemi disgiunti
Shell: variabili di sistema PATH HOME USER PWD SHELL HOSTNAME HOSTTYPE Per visualizzare il valore di tutte le variabili dambiente si usa il comando set.
LINGUAGGIO DI PROGRAMMAZIONE C
Sistemi Operativi - Vi 1 Il sistema operativo LINUX Leditor vi Giorgio Di Natale Stefano Di Carlo Politecnico di Torino Dip. Automatica e Informatica.
PHP.
Corsi per il personale Bicocca-Insubria
File System Cos’è un File System File e Directory
Informatica Generale Marzia Buscemi
1 Informatica Generale Susanna Pelagatti Ricevimento: Mercoledì ore presso Dipartimento di Informatica, Via Buonarroti,
Gestione del processore
Università degli Studi di Modena e Reggio Emilia
1 Il punto di vista Un sistema è una parte del mondo che una persona o un gruppo di persone, durante un certo intervallo di tempo, sceglie di considerare.
esponente del radicando
Anno accademico Array e puntatori in C.
Reaching Definitions. Tino CortesiTecniche di Analisi di Programmi 2 Reaching definitions Dato un punto del programma, quali sono i comandi di assegnamento.
Esercitazioni su circuiti combinatori
Funzioni definite dall’utente
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Puntatori Marco D. Santambrogio – Ver. aggiornata al 21 Marzo 2013.
File.
U V U V (a) |cfc|=2 prima e dopo (b) |cfc|=2 prima e |cfc|=1 dopo
Corso di Informatica (Programmazione)
1 Corso di Informatica (Programmazione) Lezione 13 (21 novembre 2008) Programmazione in Java: stringhe e array.
1 Anatomia di una pagina Un insieme di pagine web hanno generalmente una parte invariante (o poco): header, navigazione, footer una parte variabile: contenuti.
Corso di Informatica per Giurisprudenza
MG4J – Managing GigaBytes for Java Indicizzazione ed interrogazione di una collezione di documenti Esercitazione Ilaria Bordino Sapienza Università di.
Access: Query semplici
Corso di Informatica A.A Corso di Informatica Laurea Triennale - Comunicazione&Dams Dott.ssa Adriana Pietramala Dott.ssa.
Ranking di pagine Web Ilaria Bordino Ranking di pagine web.
Istruzioni di selezione in Java Programmazione Corso di laurea in Informatica.
Approfondimento delle classi
Cercare informazioni sul Web. 5-2 Organizzazione dellinformazione tramite gerarchie Classificazione gerarchica Linformazione è raggruppata in un piccolo.
Corso di Laurea in Ingegneria per lAmbiente e il Territorio Informatica per lAmbiente e il Territorio Docente: Giandomenico Spezzano Tutor: Alfredo Cuzzocrea.
I File.
Espressioni condizionali
Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX Dettagli e comandi avanzati Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica.
Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX AWK Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica.
Daniel Stoilov Tesi di Laurea
Labortaorio informatica 2003 Prof. Giovanni Raho 1 INFORMATICA Termini e concetti principali.
Modulo 7 – reti informatiche u.d. 3 (syllabus – )
Inserire il CDROM CygWin nel lettore, aprite la directory cyg e lanciare in esecuzione (con un doppio click del pulsante sinistro del mouse sulla relativa.
Progettazione multimediale
Test Reti Informatiche A cura di Gaetano Vergara Se clicchi sulla risposta GIUSTA passi alla domanda successiva Se clicchi sulla risposta ERRATA passi.
Elementi di Informatica di base
INFORMATICA MATTEO CRISTANI. INDICE CICLO DELLE LEZIONI LEZ. 1 INTRODUZIONE AL CORSO LEZ. 2 I CALCOLATORI ELETTRONICI LEZ. 3 ELEMENTI DI TEORIA DELL INFORMAZIONE.
Esercizio 10.* Un cassiere vuole dare un resto di n centesimi di euro usando il minimo numero di monete. a) Descrivere un algoritmo goloso per fare ciò.
Strutture dati per insiemi disgiunti
Motori di Ricerca presente e futuro prossimo
2000 Prentice Hall, Inc. All rights reserved. Capitolo 10 (Deitel) Strutture, unioni ed enumerazioni Sommario Introduzione Definire le strutture.
Progettare un database
Towards Robust Indexing for Ranked Queries aa 09/10 Candeloro D. Orlando M. Pedone A. Gruppo 5.
Diagrammi 2D e 3D Funzioni di ordine superiore
Elenchi in Excel E’ possibile inserire le voci del nuovo elenco oppure
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e stringhe Marco D. Santambrogio – Ver. aggiornata al 9 Agosto 2013.
File system distribuito transazionale con replicazione
Fopndamenti di programmazione. 2 La classe String Una stringa è una sequenza di caratteri La classe String è utilizzata per memorizzare caratteri La classe.
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA INTERMEDIA DEL 12 MARZO 2007 NOME: COGNOME: ________________________________________________________________________________.
Modulo 6 Test di verifica
1 Il Buffer Cache Unix (Bach: the Design of the Unix Operating System (cap: 3)
Microsoft Access Query (II), filtri.
Programmazione ad oggetti
Internet e HTML Diffusione di informazioni mediante la rete Internet.
Introduzione a Javascript
Eprogram informatica V anno. ASP.NET Introduzione ASP.NET (Active Server Page) è il linguaggio che, sfruttando la tecnologia.NET, permette di: -scrivere.
Esercitazione su Vector. Permette di definire collezioni di dati generiche, che sono in grado di memorizzare elementi di ogni sottotipo di Object Definito.
TW Asp - Active Server Pages Nicola Gessa. TW Nicola Gessa Introduzione n Con l’acronimo ASP (Active Server Pages) si identifica NON un linguaggio di.
Esercizi.
Approfondimenti SQL.
 Ogni processo che deve essere eseguito da un sistema di elaborazione, deve essere caricato e risiedere almeno parzialmente nella memoria centrale 
MG4J -- Managing GigaBytes for Java Pagina 1 MG4J – Managing GigaBytes for Java Indicizzazione ed interrogazione di basi documentali Ilaria Bordino Ida.
Transcript della presentazione:

MG4J – Managing GigaBytes for Java Indicizzazione ed interrogazione di basi documentali Ilaria Bordino Yahoo! Research, Barcelona

Contatto: Ilaria Bordino Personal home page: Home page del corso: Home page delle esercitazioni: Ricevimento: dott.ssa Ida Mele Ilaria Bordino MG4J -- Managing GigaBytes for JavaPagina 2 Informazioni Generali

Ilaria Bordino MG4J -- Managing GigaBytes for JavaPagina 3 MG4J Tool sviluppato presso la facoltà di Scienze dellInformazione dellUniversità degli Studi di Milano. Disponibile gratuitamente Web Page:

Ilaria Bordino MG4J -- Managing GigaBytes for JavaPagina 4 MG4J Permette lindicizzazione e linterrogazione di collezioni di documenti di grandi dimensioni; INPUT: serie di documenti omogenei OUTPUT: indice invertito USO: Permette di effettuare semplici interrogazioni sulla collezione di documenti indicizzata

Ilaria Bordino MG4J -- Managing GigaBytes for JavaPagina 5 Il processo di indicizzazione in MG4J Lindicizzazione in MG4J si fonda sulla costruzione degli indici invertiti Una document factory elabora uno stream di byte e produce un documento, composto da campi testuali o virtuali Un campo testuale è una sequenza di parole che vengono trasfomate in termini indicizzabili da un term processor linsieme di tutti I termini che appaiono nel corpo documentale costituisce il dizionario dei termini

Ilaria Bordino MG4J -- Managing GigaBytes for JavaPagina 6 Dizionario dei termini: esempio

Ilaria Bordino MG4J -- Managing GigaBytes for JavaPagina 7 Costruzione dei Batch Scansione di tutti I documenti ed estrazione delle occorrenze Costruire la lista dei termini raccogliendo nuovi termini man mano che vengono trovati Disporre I termini in ordine alfabetico, rinumerando le occorrenze di conseguenza (Se richiesto) rinumerare i documenti e disporli in ordine di termine crescente Ordinare, almeno parzialmente, le occorrenze trovate per ordine di termine crescente Quando il numero dei documenti collezionati raggiunge una data soglia, creare un sottoindice contenente il batch corrente di occorrenze

Ilaria Bordino MG4J -- Managing GigaBytes for JavaPagina 8 Struttura dellindice mycollection-{text,title}.terms: un file di testo contenente lintero dizionario, un termine per riga, ordinato secondo lindice –more mycollection-text.terms mycollection- { text,title}.frequencies: per ciascun termine, il numero di documenti in cui tale termine appare (codificato in -code) mycollection-{title,text}.sizes: contiene, per ciascun documento indicizzato, la corrispondente dimensione (=numero di parole) in - code.

Ilaria Bordino MG4J -- Managing GigaBytes for JavaPagina 9 Struttura dellindice (2) mycollection{text,title}.globcounts: per ciascun termine, viene memorizzato il numero di occorrenze in -code. mycollection{text,title}.offset: per ciascun termine, viene memorizzato loffset in -code mycollection-{text,title}.batch : quando la memoria e piena di termini, viene effettuata una copia codificata in -code in un file batch e viene iniziata una nuova lista. Alla fine del processo, i file di batch vengono uniti.

Ilaria Bordino MG4J -- Managing GigaBytes for JavaPagina 10 Struttura dellindice (3) mycollection{text,title}.stats: raccoglie alcune statistiche sull' indicizzazione mycollection{text,title}.index: lindice invertito in - code.

Ilaria Bordino MG4J -- Managing GigaBytes for JavaPagina 11 Struttura dellindice (4) mycollection{text,title}.properties: contiene alcuni dati relativi al processo di indicizzazione: Documents: numero di documenti nella collection; Terms: numero di termini indicizzati; Occurrences: numero di parole nellintera collection; Batches: numero di batch file generati; Maxdocsize: massima dimensione di un documento (parole); termprocessor: il term processor (se presente) usato durante la costruzione: ad esempio DowncaseTermProcessor; Occsperbatch: massimo numero di occorrenze in ciascun batch; Permutation: nome del file di premutazione usato. –More mycollection-text.properties –ls –lh mycollection

Ilaria Bordino MG4J -- Managing GigaBytes for JavaPagina 12 Combinazione dei Batch Lindicizzazione produce un certo numero di sottoindici che debbono essere combinati in un singolo indice Il tempo necessario per combinare i sottoindici cresce in modo logaritmico con il loro numero MG4J supporta 3 diversi tipi di combinazione: - Concatenazione - Merge - Paste

Ilaria Bordino MG4J -- Managing GigaBytes for JavaPagina 13 Combinazione dei batch: concatenazione Data una lista di indici, il nuovo indice viene costruito rinumerando i sottoindici nel modo seguente: al primo documento di ogni indice successivo al primo viene viene assegnato un nuovo indice pari al numero totale di documenti contenuti nei sottoindici precedenti. I documenti successivi vengono rinumerati conseguentemente (combinazione applicata per default) Lindice risultante è uguale a quello che si sarebbe ottenuto indicizzando la concatenazione delle sequenze di documenti per cui sono stati prodotti I vari sottoindici.

Ilaria Bordino MG4J -- Managing GigaBytes for JavaPagina 14 Combinazione dei batch: Merge Si assume che ogni indice contenga un sottoinsieme separato di documenti, senza sovrapposizione di numeri, e si effettua un merge delle liste coerente con questa assunzione. Se uno stesso documento appare in due indici loperazione viene interrotta Questa combinazione viene applicata ai batch quando i documenti sono stati rinumerati e ogni batch contiene numeri di documento potenzialmente non consecutivi.

Ilaria Bordino MG4J -- Managing GigaBytes for JavaPagina 15 Combinazione dei batch: paste Si assume che ogni sottoindice indicizzi una parte di un documento, che può essere anche vuota. Per ogni termine e per ogni documento, si recuperano le posizioni del termine allinterno del documento, che vengono opportunamente rinumerate. Lindice risultante è uguale a quello che si sarebbe ottenuto applicando il comando Unix paste ai file di testo. Questa combinazione viene applicata ai documenti virtuali

Ilaria Bordino MG4J -- Managing GigaBytes for Java Interrogazione degli indici Una volta che abbiamo costruito gli indici, siamo pronti ad interrogarli usando un web server. Si può usare sia il tool da riga di comando che una interfaccia web Varie opzioni a disposizione: Ad esempio si può chiedere di caricare lindice in memoria principale, oppure mettere in main memory solo la parte dellindice usata più di frequente, come una sorta di cache.

Ilaria Bordino MG4J -- Managing GigaBytes for JavaPagina 17 Interrogazioni semplici Ricerca delle occorrenze di una parola ttore –EX: attore –EX: attrice AND: scrivendo piu termini separati da AND (o &) si ottengono i documenti che contengono tutte le parole specificate; & pandolfi –EX: claudia & pandolfi OR: restituisce i documenti che contengono almeno una delle parole separate da OR (o |); | gerini –EX: pandolfi | gerini

Ilaria Bordino MG4J -- Managing GigaBytes for JavaPagina 18 Interrogazioni semplici (2) NOT: restituisce i documenti che non contengono la parola preceduta da NOT (o !); & !pandolfi –EX: claudia & !pandolfi Parentesi: le parentesi sono usate per definire le priorita nella query & (pandolfi | gerini)EX: claudia & (pandolfi | gerini) FraseFrase: le parole messe fra appaiono consecutivamente nelle documenti ritornati –EX: invia questa | ricerca avanzata

Ilaria Bordino MG4J -- Managing GigaBytes for JavaPagina 19 Interrogazioni con asterisco (wildcard) Prossimita: si puo` limitare la distanza massima fra un insieme di paroleProssimita: si puo` limitare la distanza massima fra un insieme di parole –EX: (claudia attrice)~3 AsteristicoAsteristico: * serve per specificare una qualunque sequenza di caratteri –EX: att*

Ilaria Bordino MG4J -- Managing GigaBytes for Java Interrogazioni Index specifiers: premettere al testo della query il nome di un indice seguito da : per limitare la ricerca allindice specificato. Esempio: title:Gerini Range query: nel caso di indici contenenti payload è possibile effettuare interrogazioni di range utilizzando la sintassi [.. ] Esempio: Assumendo lesistenza di un campo data [ 20/2/ /2/2007 ] :

Ilaria Bordino MG4J -- Managing GigaBytes for JavaPagina 21 Interrogazioni complesse MG4J fornisce sofisticati meccanismi di tuning delle query. Gli scorer permettono di riordinare i documenti ottenuti in risposta ad una interrogazione in base a un dato criterio. Per sfruttare queste possibilità occorre usare linterfaccia a linea di comando. $ --- Mostra le opzioni disponibili $mode -- Seleziona la modalità di presentazione del risultato

Ilaria Bordino MG4J -- Managing GigaBytes for JavaPagina 22 Gestione dei campi virtuali In alcuni casi il contenuto di un documento fa riferimento ad altri documenti esistenti nella collezione. Esempio: ancore in un documento HTML.

Ilaria Bordino MG4J -- Managing GigaBytes for JavaPagina 23 Campi virtuali e frammenti virtuali Ogni document factory trasforma sequenze di byte in documenti composti da campi di tipo testuale o virtuale. Un campo testuale è una porzione di testo composta da parole; le parole sono gli atomi del sistema di indicizzazione di MG4J. Un campo virtuale contiene porzioni di testo che fanno riferimento ad altri documenti (possibilmente esistenti nella collezione).

Ilaria Bordino MG4J -- Managing GigaBytes for JavaPagina 24 Campi virtuali e frammenti virtuali (2) Un campo virtuale è una lista di coppie formate da un segmento di testo (frammento virtuale) e da una stringa (document spec) che rappresenta il documento a cui il frammento fa riferimento. Es. HtmlDocumentFactory produce documenti HTML composti da 3 campi, due testuali (text e title) e uno virtuale (anchor) Il campo anchor contiene tutte le ancore presenti in un documento: è una lista di coppie in cui il frammento è dato dal testo dellancora, mentre la document spec è la URL specificata come valore dellattributo HREF.

Ilaria Bordino MG4J -- Managing GigaBytes for JavaPagina 25 Document Resolver Una document factory non si occupa di mappare le document spec in veri e propri riferimenti a documenti esistenti nella collezione. Questo compito viene svolto da un document resolver, che stabilisce se ed a quale documento esistente nella collezione ogni document spec corrisponde. I campi virtuali vengono indicizzati da MG4J solo in seguito ad esplicita richiesta dellutente.

Ilaria Bordino MG4J -- Managing GigaBytes for JavaPagina 26 Indicizzazione dei campi virtuali Come primo passo occorre costruire un document resolver che sia in grado di tradurre le document spec prodotte per il campo anchor di ogni documento HTML in riferimenti a documenti della collezione. URLMPHVirtualDocumentResolver trasforma le URL in riferimenti a documenti. Il comando java –Xmx1G it.unimi.dsi.mg4j.tool.ScanMetadata –S actors.collection –u actors.urls permette di costruire lelenco delle URL dei documenti che appartengono alla collezione.

Ilaria Bordino MG4J -- Managing GigaBytes for JavaPagina 27 Testi virtuali Concettualmente, tutti I frammenti virtuali che fanno riferimento ad un dato documento producono un unico testo, detto testo virtuale, che viene indicizzato come parte del documento suddetto. Il testo virtuale viene costruito concatenando I frammenti virtuali relativi alle diverse ancore. Possibilità di falsi positivi: ad es, query congiuntive potrebbero restituire documenti che contengono entrambe le parole nelle loro ancore, anche se non le contengono nella stessa ancora.

Ilaria Bordino MG4J -- Managing GigaBytes for JavaPagina 28 Gap virtuali Il gap virtuale è un intero positivo che rappresenta lo spazio virtuale lasciato tra due frammenti virtuali distinti. I gap virtuali possono essere sfruttati per aggirare il problema dei falsi positivi: ad es, la query anchor: (buffer AND long) ~64 solo i documenti che contengono entrambe le parole nella stessa ancora appariranno nel risultato.

Ilaria Bordino MG4J -- Managing GigaBytes for JavaPagina 29 Indici basati su payload MG4J fornisce un tipo speciale di indice, detto indice basato su payload, che viene usato per memorizzare i metadati relativi ad un documento (date, interi…) Ogni posting ha un payload, cioè un dato relativo al documento a cui il posting fa riferimento.

Performance: Indexing Time MG4J supporta una costruzione dellindice flessibile; possibilità di scegliere differenti codifiche. Codici non parametrici generalmente più veloci di quelli parametrici; Scartare ciò di cui non si ha bisogno: lindice costruito per default contiene tutte le informazioni Aggiungere skip pointers (non previsti per default). Ilaria Bordino MG4J -- Managing GigaBytes for Java

Performance: Setup Time Possibilità di migliorare le performance nella gestione delle risposte alle interrogazioni. Un indice può essere - letto dal disco - mappato in memoria - caricato direttamente in memoria principale Allaumento di utilizzo della memoria principale corrisponde un aumento di velocità nel rispondere alle query. Ilaria Bordino MG4J -- Managing GigaBytes for Java

Clustering MG4J supporta la combinazione di indici in cluster. Esempio: indicizzare separatamente due sottoinsiemi di documenti. Combinare i due sottoindici per ottenere un nuovo indice. Alternativa: clustering basato su concatenazione. Un cluster permette di usare un insieme di indici locali come un unico indice globale. Ilaria Bordino MG4J -- Managing GigaBytes for Java

Cluster documentali Ogni documento dellindice globale appare esattamente una volta in ogni indice locale. Scenario di utilizzo: mantenere in un indice separato un insieme di documenti con elevato rank statico Ilaria Bordino MG4J -- Managing GigaBytes for Java

Cluster lessicali Ogni termine dellindice globale appare esattamente una volta in ogni indice locale. Utilizzo: caricare in main memory le liste invertite dei termini che appaiono più frequentemente nelle query. Ilaria Bordino MG4J -- Managing GigaBytes for Java

Partizionamento Suddivisione delle liste invertite dellindice in base a qualche criterio. Varie possibilità: - Partizionamento documentale - Partizionamento lessicale - Utilizzo di strategie di partizionamento personalizzate. Ilaria Bordino MG4J -- Managing GigaBytes for Java