Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
PubblicatoLucrezia Chiara Costantini Modificato 8 anni fa
1
MG4J -- Managing GigaBytes for Java Pagina 1 MG4J – Managing GigaBytes for Java Indicizzazione ed interrogazione di basi documentali Ilaria Bordino Ida Mele Sapienza Università di Roma
2
MG4J -- Managing GigaBytes for Java Pagina 2 Informazioni Generali Contatto: Dipartimento di Informatica e Sistemistica Via Ariosto 25 Ilaria Bordino stanza B112 - B113 (primo piano) Telefono: +39-06-77274120 E-mail: bordino@dis.uniroma1.itbordino@dis.uniroma1.it Home page: http://www.dis.uniroma1.it/~bordino Ida Mele stanza B221 (secondo piano) Telefono: +39-06-77274004 E-mail: mele@dis.uniroma1.itmele@dis.uniroma1.it Home page: http://www.dis.uniroma1.it/~melehttp://www.dis.uniroma1.it/~mele
3
MG4J -- Managing GigaBytes for Java Pagina 3 MG4J – Managing GigaBytes for Java Tool sviluppato presso la facoltà di Scienze dell’Informazione dell’Università degli Studi di Milano. Disponibile gratuitamente. Web Page: http://mg4j.dsi.unimi.it
4
MG4J -- Managing GigaBytes for Java Pagina 4 MG4J – Managing GigaBytes for Java (2) 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.
5
MG4J -- 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.
6
MG4J -- Managing GigaBytes for Java Pagina 6 Dizionario dei termini: esempio
7
MG4J -- Managing GigaBytes for Java Pagina 7 Costruzione dei Batch Scandire tutti i documenti ed estrarre le 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
MG4J -- 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 gamma-code). mycollection-{title,text}.sizes: contiene, per ciascun documento indicizzato, la corrispondente dimensione (=numero di parole) in gamma-code.
9
MG4J -- Managing GigaBytes for Java Pagina 9 Struttura dell’indice (2) mycollection{text,title}.globcounts: per ciascun termine, viene memorizzato il numero di occorrenze in gamma-code. mycollection{text,title}.offset: per ciascun termine, viene memorizzato l’offset in gamma-code. mycollection-{text,title}.batch : quando la memoria è piena di termini, viene effettuata una copia codificata in gamma-code in un file batch e viene iniziata una nuova lista. Alla fine del processo, i file di batch vengono uniti.
10
MG4J -- 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 gamma-code.
11
MG4J -- 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
12
MG4J -- 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
13
MG4J -- 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 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.
14
MG4J -- 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.
15
MG4J -- 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.
16
MG4J -- Managing GigaBytes for Java Pagina 16 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.
17
MG4J -- Managing GigaBytes for Java Pagina 17 Interrogazioni semplici Ricerca delle occorrenze di una parola; –Es: attore –Es: attrice AND: scrivendo più termini separati da AND (o &) si ottengono i documenti che contengono tutte le parole specificate; & pandolfi –Es: claudia & pandolfi OR: restituisce i documenti che contengono almeno una delle parole separate da OR (o |); | gerini –Es: pandolfi | gerini
18
MG4J -- Managing GigaBytes for Java Pagina 18 Interrogazioni semplici (2) NOT: restituisce i documenti che non contengono la parola preceduta da NOT (o !); & !pandolfi –Es: claudia & !pandolfi Parentesi: le parentesi sono usate per definire le priorità nella query; & (pandolfi | gerini) – Es: claudia & (pandolfi | gerini) FraseFrase: le parole messe fra “ ” appaiono consecutivamente nelle documenti ritornati; –Es: “invia questa” | “ricerca avanzata”
19
MG4J -- Managing GigaBytes for Java Pagina 19 Interrogazioni con asterisco (wildcard) Prossimità: si può limitare la distanza massima fra un insieme di parole;Prossimità: si può limitare la distanza massima fra un insieme di parole; –Es: (claudia attrice)~3 AsteristicoAsteristico: * serve per specificare una qualunque sequenza di caratteri; –Es: att*
20
MG4J -- Managing GigaBytes for Java Pagina 20 Interrogazioni (approfondimenti) ● Index specifiers: premettere al testo della query il nome di un indice seguito da “:” per limitare la ricerca all’indice specificato; – Es: title:Gerini Range query: nel caso di indici contenenti payload è possibile effettuare interrogazioni di range utilizzando la sintassi: [.. ] – Es: assumendo l’esistenza di un campo data [ 20/2/2007.. 23/2/2007 ]
21
MG4J -- 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.
22
MG4J -- 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.
23
MG4J -- 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).
24
MG4J -- 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 in cui il frammento virtuale è dato dal testo dell’ancora, mentre la document spec è la URL specificata come valore dell’attributo HREF.
25
MG4J -- 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.
26
MG4J -- 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.
27
MG4J -- 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.
28
MG4J -- 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: (claudia AND attrice) ~64 solo i documenti che contengono entrambe le parole nella stessa ancora appariranno nel risultato.
29
MG4J -- 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.
30
MG4J -- Managing GigaBytes for Java Pagina 30 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).
31
MG4J -- Managing GigaBytes for Java Pagina 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. All’aumento di utilizzo della memoria principale corrisponde un aumento di velocità nel rispondere alle query.
32
MG4J -- Managing GigaBytes for Java Pagina 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.
33
MG4J -- Managing GigaBytes for Java Pagina 33 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.
34
MG4J -- Managing GigaBytes for Java Pagina 34 Cluster lessicali Ogni termine dell’indice globale appare esattamente una volta in ogni indice locale. Scenario di utilizzo: caricare in main memory le liste invertite dei termini che appaiono più frequentemente nelle query.
35
MG4J -- Managing GigaBytes for Java Pagina 35 Partizionamento Suddivisione delle liste invertite dell’indice in base a qualche criterio. Varie possibilità: - partizionamento documentale; - partizionamento lessicale; - utilizzo di strategie di partizionamento personalizzate.
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.