+ All Categories
Home > Documents > MG4J – Managing GigaBytes for Java Indicizzazione ed interrogazione di basi documentali Ilaria...

MG4J – Managing GigaBytes for Java Indicizzazione ed interrogazione di basi documentali Ilaria...

Date post: 01-May-2015
Category:
Upload: luca-grosso
View: 213 times
Download: 1 times
Share this document with a friend
35
MG4J – Managing GigaBytes for Java Indicizzazione ed interrogazione di basi documentali Ilaria Bordino Yahoo! Research, Barcelona
Transcript
Page 1: MG4J – Managing GigaBytes for Java Indicizzazione ed interrogazione di basi documentali Ilaria Bordino Yahoo! Research, Barcelona.

MG4J – Managing GigaBytes for Java

Indicizzazione ed interrogazione di basi documentali

Ilaria Bordino

Yahoo! Research, Barcelona

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

• Contatto: Ilaria Bordino

[email protected]@dis.uniroma1.it

Personal home page: www.dis.uniroma1.it/~bordino

Home page del corso: http://www.cs.brown.edu/~aris/teaching/webir11/webir11.html

Home page delle esercitazioni: http://www.dis.uniroma1.it/~mele/teaching_20112012.html

Ricevimento: dott.ssa Ida Mele

Ilaria BordinoMG4J -- Managing GigaBytes for Java Pagina 2

Informazioni Generali

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

Ilaria BordinoMG4J -- Managing GigaBytes for Java Pagina 3

MG4J

• Tool sviluppato presso la facoltà di Scienze dell’Informazione dell’Università degli Studi di Milano.

• Disponibile gratuitamente

• Web Page: http://mg4j.dsi.unimi.it

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

Ilaria BordinoMG4J -- Managing GigaBytes for Java Pagina 4

MG4J

• Permette l’indicizzazione e l’interrogazione 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

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

Ilaria BordinoMG4J -- Managing GigaBytes for Java Pagina 5

Il processo di indicizzazione in MG4J

• L’indicizzazione 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

• l’insieme di tutti I termini che appaiono nel corpo documentale costituisce il dizionario dei termini

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

Ilaria BordinoMG4J -- Managing GigaBytes for Java Pagina 6

Dizionario dei termini: esempio

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

Ilaria BordinoMG4J -- Managing GigaBytes for Java Pagina 7

Costruzione dei Batch

• Scansione di tutti I documenti ed estrazione delle occorrenze <t,d,p>

• 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

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

Ilaria BordinoMG4J -- Managing GigaBytes for Java Pagina 8

Struttura dell’indice

• mycollection-{text,title}.terms: un file di testo contenente l’intero dizionario, un termine per riga, ordinato secondo l’indice– 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.

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

Ilaria BordinoMG4J -- Managing GigaBytes for Java Pagina 9

Struttura dell’indice (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 l’offset in -code

• mycollection-{text,title}.batch<i>: 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.

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

Ilaria BordinoMG4J -- Managing GigaBytes for Java Pagina 10

Struttura dell’indice (3)

• mycollection{text,title}.stats: raccoglie alcune statistiche sull' indicizzazione

• mycollection{text,title}.index: l’indice invertito in -code.

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

Ilaria BordinoMG4J -- Managing GigaBytes for Java Pagina 11

Struttura dell’indice (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 nell’intera 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

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

Ilaria BordinoMG4J -- Managing GigaBytes for Java Pagina 12

Combinazione dei Batch

• L’indicizzazione 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

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

Ilaria BordinoMG4J -- Managing GigaBytes for Java Pagina 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)

• L’indice risultante è uguale a quello che si sarebbe ottenuto indicizzando la concatenazione delle sequenze di documenti per cui sono stati prodotti I vari sottoindici.

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

Ilaria BordinoMG4J -- Managing GigaBytes for Java Pagina 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 l’operazione viene interrotta

• Questa combinazione viene applicata ai batch quando i documenti sono stati rinumerati e ogni batch contiene numeri di documento potenzialmente non consecutivi.

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

Ilaria BordinoMG4J -- Managing GigaBytes for Java Pagina 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 all’interno del documento, che vengono opportunamente rinumerate.

• L’indice risultante è uguale a quello che si sarebbe ottenuto applicando il comando Unix paste ai file di testo.

• Questa combinazione viene applicata ai documenti virtuali

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

Ilaria BordinoMG4J -- 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 l’indice in

memoria principale, oppure mettere in main memory solo la parte dell’indice usata più di frequente, come una sorta di cache.

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

Ilaria BordinoMG4J -- Managing GigaBytes for Java Pagina 17

Interrogazioni semplici

• Ricerca delle occorrenze di una parola– EX: attorettore– EX: attrice

• AND: scrivendo piu’ termini separati da AND (o &) si ottengono i documenti che contengono tutte le parole specificate;– EX: claudia & pandolfi & pandolfi

• OR: restituisce i documenti che contengono almeno una delle parole separate da OR (o |);– EX: pandolfi | gerini | gerini

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

Ilaria BordinoMG4J -- Managing GigaBytes for Java Pagina 18

Interrogazioni semplici (2)

• NOT: restituisce i documenti che non contengono la parola preceduta da NOT (o !);– EX: claudia & !pandolfi & !pandolfi

• Parentesi: le parentesi sono usate per definire le priorita’ nella query

• EX: claudia & (pandolfi | gerini) & (pandolfi | gerini)

• FraseFrase: le parole messe fra “ “ appaiono consecutivamente nelle documenti ritornati– EX: “invia questa” | “ricerca avanzata”

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

Ilaria BordinoMG4J -- Managing GigaBytes for Java Pagina 19

Interrogazioni con asterisco (wildcard)

• Prossimita’:Prossimita’: si puo` limitare la distanza massima fra si puo` limitare la distanza massima fra un insieme di paroleun insieme di parole– EX: (claudia attrice)~3

• AsteristicoAsteristico: * serve per specificare una qualunque sequenza di caratteri– EX: att*

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

Ilaria BordinoMG4J -- Managing GigaBytes for Java

Interrogazioni

• Index specifiers: premettere al testo della query il nome di un indice seguito da “:” per limitare la ricerca all’indice specificato.

Esempio: title:Gerini• Range query: nel caso di indici contenenti payload

è possibile effettuare interrogazioni di range utilizzando la sintassi [ .. ]

• Esempio: Assumendo l’esistenza di un campo data

[ 20/2/2007 .. 23/2/2007 ] :

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

Ilaria BordinoMG4J -- Managing GigaBytes for Java Pagina 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 l’interfaccia a linea di comando.

• $ --- Mostra le opzioni disponibili• $mode -- Seleziona la modalità di presentazione del

risultato

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

Ilaria BordinoMG4J -- Managing GigaBytes for Java Pagina 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.

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

Ilaria BordinoMG4J -- Managing GigaBytes for Java Pagina 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).

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

Ilaria BordinoMG4J -- Managing GigaBytes for Java Pagina 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 <frammento virtuale, document spec> in cui il frammento è dato dal testo dell’ancora, mentre la document spec è la URL specificata come valore dell’attributo HREF.

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

Ilaria BordinoMG4J -- Managing GigaBytes for Java Pagina 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 dell’utente.

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

Ilaria BordinoMG4J -- Managing GigaBytes for Java Pagina 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 l’elenco delle URL dei documenti che appartengono alla collezione.

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

Ilaria BordinoMG4J -- Managing GigaBytes for Java Pagina 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.

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

Ilaria BordinoMG4J -- Managing GigaBytes for Java Pagina 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.

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

Ilaria BordinoMG4J -- Managing GigaBytes for Java Pagina 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.

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

Performance: Indexing Time

• MG4J supporta una costruzione dell’indice flessibile; possibilità di scegliere differenti codifiche.

• Codici non parametrici generalmente più veloci di quelli parametrici;

• Scartare ciò di cui non si ha bisogno: l’indice costruito per default contiene tutte le informazioni

• Aggiungere skip pointers (non previsti per default).

Ilaria BordinoMG4J -- Managing GigaBytes for Java

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

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

All’aumento di utilizzo della memoria principale corrisponde un aumento di velocità nel rispondere alle query.

Ilaria BordinoMG4J -- Managing GigaBytes for Java

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

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 BordinoMG4J -- Managing GigaBytes for Java

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

Cluster documentali

• Ogni documento dell’indice 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 BordinoMG4J -- Managing GigaBytes for Java

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

Cluster lessicali

• Ogni termine dell’indice 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 BordinoMG4J -- Managing GigaBytes for Java

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

Partizionamento

• Suddivisione delle liste invertite dell’indice in base a qualche criterio.

• Varie possibilità:

- Partizionamento documentale

- Partizionamento lessicale

- Utilizzo di strategie di partizionamento personalizzate.

Ilaria BordinoMG4J -- Managing GigaBytes for Java


Recommended