Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
PubblicatoLuca Grosso Modificato 11 anni fa
1
MG4J – Managing GigaBytes for Java Indicizzazione ed interrogazione di basi documentali Ilaria Bordino Yahoo! Research, Barcelona
2
Contatto: Ilaria Bordino bordino@yahoo-inc.com bordino@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 Bordino MG4J -- Managing GigaBytes for JavaPagina 2 Informazioni Generali
3
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: http://mg4j.dsi.unimi.it
4
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
5
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
6
Ilaria Bordino MG4J -- Managing GigaBytes for JavaPagina 6 Dizionario dei termini: esempio
7
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
8
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.
9
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.
10
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.
11
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
12
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
13
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.
14
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.
15
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
16
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.
17
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
18
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
19
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*
20
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/2007.. 23/2/2007 ] :
21
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
22
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.
23
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).
24
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.
25
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.
26
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.
27
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.
28
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.
29
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.
30
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
31
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
32
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
33
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
34
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
35
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
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.