MG4J – Managing GigaBytes for Java Indicizzazione ed interrogazione di una collezione di documenti Esercitazione Ilaria Bordino Sapienza Università di.

Slides:



Advertisements
Presentazioni simili
Training On Line - CONP. 2 Richiesta Da Menu: Conferimenti ad inizio anno termico > Agosto > Pluriennali > Nuova Richiesta Si accede alla pagina di Richiesta.
Advertisements

Strutture dati per insiemi disgiunti
Sistemi Operativi - Vi 1 Il sistema operativo LINUX Leditor vi Giorgio Di Natale Stefano Di Carlo Politecnico di Torino Dip. Automatica e Informatica.
TAV.1 Foto n.1 Foto n.2 SCALINATA DI ACCESSO ALL’EREMO DI SANTA CATERINA DEL SASSO DALLA CORTE DELLE CASCINE DEL QUIQUIO Foto n.3 Foto n.4.
1 Pregnana Milanese Assessorato alle Risorse Economiche Bilancio Preventivo P R O P O S T A.
Corsi per il personale Bicocca-Insubria
1 Astrazioni sui dati : Specifica ed Implementazione di Tipi di Dato Astratti in Java.
Informatica Generale Marzia Buscemi
1 Informatica Generale Susanna Pelagatti Ricevimento: Mercoledì ore presso Dipartimento di Informatica, Via Buonarroti,
Java2 Esercitazioni del corso di Sistemi Informativi Marina Mongiello
Frontespizio Economia Monetaria Anno Accademico
I sistemi di riferimento
Training On Line – CONA. 2 Richiesta Da Menu: Conferimenti ad inizio anno termico > Agosto > Annuali > Nuova Richiesta Si accede alla pagina di Richiesta.
Programmazione Procedurale in Linguaggio C++
Implementazione dell algortimo di Viterbi attraverso la soluzione del problema di cammino mi- nimo tramite software specifico. Università degli studi di.
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
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 2 – Info B Marco D. Santambrogio – Riccardo Cattaneo –
1 UNIVERSITA DEGLI STUDI MILANO PRESENTAZIONE NUOVO CATALOGO IN LINEA SERVIZI AL LETTORE Alessandra Carta Biblioteca delle Facoltà di Giurisprudenza Lettere.
File.
Algoritmo di Ford-Fulkerson
Programmazione 1 9CFU – TANTE ore
Ufficio Studi UNIONCAMERE TOSCANA 1 Presentazione di Riccardo Perugi Ufficio Studi UNIONCAMERE TOSCANA Firenze, 19 dicembre 2000.
Realizzazione e caratterizzazione di una semplice rete neurale per la separazione di due campioni di eventi Vincenzo Izzo.
Managing Gigabytes for Java MG4J Indicizzazione ed interrogazione di basi di documenti Ilaria Bordino e Debora Donato.
Ranking di pagine Web Ilaria Bordino, Yahoo! Research Barcelona
Il linguaggio Fortran 90: 4. Array: Vettori e Matrici
Ranking di pagine Web Ilaria Bordino, Yahoo! Research Barcelona Ida Mele, Sapienza Universita di Roma.
MG4J – Managing GigaBytes for Java Indicizzazione ed interrogazione di basi documentali Ilaria Bordino Yahoo! Research, Barcelona.
CORSO DI RICERCA BIBLIOGRAFICA 4. giornata (20 marzo 2008) Web of Science Beilstein e Gmelin Crossfire.
Ranking di pagine Web Ilaria Bordino Ranking di pagine web.
La partita è molto combattuta perché le due squadre tentano di vincere fino all'ultimo minuto. Era l'ultima giornata del campionato e il risultato era.
Dipartimento di Ingegneria Idraulica e Ambientale - Universita di Pavia 1 Scritte scritte scritte scritte scritte scritte scritte Scritte scritte Titolo.
Istruzioni di selezione in Java Programmazione Corso di laurea in Informatica.
Università di Trieste Calcolatori Elettronici a.a Omero TuzziL01, Basi 1 Sommario: 1. Concetto di bit. 2. Indirizzi di memoria. 3. Ordinamento.
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.
Introduzione alle basi di dati
Portale Capacità STOGIT
2 3 4 RISERVATEZZA INTEGRITA DISPONIBILITA 5 6.
Melfi, 1 aprile 2011 – MediaShow 1 Social Network: possibilità di uso consapevole nella didattica Uso, consapevolezza, opportunità, proposte Caterina Policaro.
1 Negozi Nuove idee realizzate per. 2 Negozi 3 4.
Scheda Ente Ente Privato Ente Pubblico. 2ROL - Richieste On Line.
1 Guida per linsegnamento nei corsi per il conseguimento del CERTIFICATO DI IDONEITÀ ALLA GUIDA DEL CICLOMOTORE.
Motori di Ricerca presente e futuro prossimo
Bando Arti Sceniche. Per poter procedere è indispensabile aprire il testo del Bando 2ROL - Richieste On Line.
2000 Prentice Hall, Inc. All rights reserved. Capitolo 10 (Deitel) Strutture, unioni ed enumerazioni Sommario Introduzione Definire le strutture.
LE SAI LE TABELLINE? Mettiti alla prova!.
QUIZ – PATENTE EUROPEA – ESAME WORD
La versione 18 di Aleph500: le novità CATALOGAZIONE Rita Vanin Ottobre 2007.
Elenchi in Excel E’ possibile inserire le voci del nuovo elenco oppure
21 marzo 2002 (ri-)Avvisi: Giovedi 28 marzo la lezione e sospesa. Nuovo indirizzo di Spedire messaggi e esercizi solo.
1 Ly-LAB Sistema di gestione dei dati analitici di laboratorio.
Creare pagine web Xhtlm. Struttura di una pagina.
Capitolo 3 Strutture dati elementari Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
BIOINFO3 - Lezione 111 CGI-BIN CGI-BIN sono chiamati i programmi la cui esecuzione può essere richiesta attraverso il WEB. Il server web (httpd) della.
BIOINFO3 - Lezione 41 ALTRO ESEMPIO ANCORA Progettare il comando di creazione di una tabella di pubblicazioni scientifiche. Come chiave usare un numero.
Fopndamenti di programmazione. 2 La classe String Una stringa è una sequenza di caratteri La classe String è utilizzata per memorizzare caratteri La classe.
Sviluppare un programma in C che, dato un array da 100 elementi interi caricato con numeri casuali compresi tra [10,100], sia in grado di cercare il valore.
Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill,
Modulo 6 Test di verifica
METODI DI RAPPRESENTAZIONE TECNICA
A.P. cat. B - 1 Per chi vuole: Libro di testo D.P. Curtis, K. Foley, K. Sen, C. Morin Informatica di base 2° edizione Mc Graw-Hill Companies.
1 Microsoft Access Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni Informatica per laurea triennale.
IL GIOCO DEL PORTIERE CASISTICA. Caso n. 1 Il portiere nella seguente azione NON commette infrazioni.
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.
Sommario Oggetti immutabili e non Tipi Primitivi: String, Arrays.
Esercizi.
MG4J – Managing GigaBytes for Java Indicizzazione ed interrogazione di una collezione di documenti Esercitazione Ilaria Bordino Ida Mele Sapienza Università.
Transcript della presentazione:

MG4J – Managing GigaBytes for Java Indicizzazione ed interrogazione di una collezione di documenti Esercitazione Ilaria Bordino Sapienza Università di Roma & Universitat Pompeu Fabra de Barcelona

Ilaria Bordino MG4J -- Managing GigaBytes for JavaPagina 2 Overview dei pacchetti principali Document –Document –DocumentCollection –FileSetDocumentCollection –DocumentFactory Index Query –HttpQueryServer –QueryEngine Documentation: Manual:

Ilaria Bordino MG4J -- Managing GigaBytes for JavaPagina 3 Document Interfaccia definita in it.unimi.dsi.mg4j.document Ogni classe che implementa Document rappresenta un singolo documento indicizzabile. Un documento è composto da un numero di campi che dipende dal tipo di documento; esempio: – from, to, data, subject, body –Pagina html: title, url, body

Ilaria Bordino MG4J -- Managing GigaBytes for JavaPagina 4 Document

Ilaria Bordino MG4J -- Managing GigaBytes for JavaPagina 5 Document Collection Interfaccia definita in it.unimi.dsi.mg4j.document Una collection è una lista di documenti accessibili in modo casuale.

Ilaria Bordino MG4J -- Managing GigaBytes for JavaPagina 6 FileSetDocumentCollection Classe definita in it.unimi.dsi.mg4j.document Una DocumentCollection corrisponde a un insieme di file specificati in forma di array.

Ilaria Bordino MG4J -- Managing GigaBytes for JavaPagina 7 Document Factory Interfaccia definita in it.unimi.dsi.mg4j.document Una factory esegue il parsing di documenti omogenei. Ogni documento prodotto da una stessa factory contiene un certo numero di campi che vanno indicizzati separatemente.

Ilaria Bordino MG4J -- Managing GigaBytes for JavaPagina 8 Implementazioni di DocumentFactory CompositeDocumentFactory HtmlDocumentFactory IdentityDocumentFactory MailDocumentFactory PdfDocumentFactory ReplicatedDocumentFactory PropertyBasedDocumentFactory TRECHeaderDocumentFactory ZipDocumentCollection.ZipFactory

Ilaria Bordino MG4J -- Managing GigaBytes for JavaPagina 9 Query Interprete a riga di comando per linterrogazione di indici Può anche avviare un web server che mostra i risultati in modo simile ai motori di ricerca a cui siamo abituati

Ilaria Bordino MG4J -- Managing GigaBytes for JavaPagina 10 QueryEngine Un motore di ricerca che prende una query e restituisce i risultati, utilizzando un insieme programmabile di politiche di scoring.

Ilaria Bordino MG4J -- Managing GigaBytes for JavaPagina 11 HttpQueryServer Un semplice web server che processa le query. Se una collezione di documenti è disponibile, il server mostrerà alcuni intervalli che soddisfano la query sottomessa.

Ilaria Bordino MG4J -- Managing GigaBytes for JavaPagina 12 Costruzione della prima collezione di documenti Lindicizzazione in MG4J e centrata sul concetto di documento; Collezione di partenza: Attori e attrici Si usa la class FileSetDocumentCollection : che permette di costruire e serializzare un insieme di documenti specificati mediate il nome del file

Ilaria Bordino MG4J -- Managing GigaBytes for JavaPagina 13 Addizionare al CLASSPATH DIR=mg4j-dependencies CLASSPATH=.:$DIR/BeanShell/bsh-2.0b2.jar:$DIR/mg4j jar:$DIR/colt jar:$DIR/jakarta-commons-collections- 3.1.jar:$DIR/jakarta-commons-configuration-1.2.jar:$DIR/jal jar:$DIR/jsap-2.0.jar:$DIR/mysql-connector- java.jar:$DIR/fastutil jar:$DIR/jakarta-commons-io- 1.2.jar:$DIR/javacc-4.0.jar:$DIR/libreadline-java.jar:$DIR/pdfbox jar:$DIR/gnu.getopt.jar:$DIR/jakarta-commons-lang- 2.1.jar:$DIR/javamail/mailapi.jar:$DIR/servletapi5.jar:$DIR/jaf.jar:$DI R/jakarta-commons-logging- 1.1.jar:$DIR/jetty5/jetty5.jar:$DIR/mstor.jar:$DIR/tagsoup.jar:$DIR/lo g4j jar:$DIR/velocity-1.4.jar:$DIR/classpathx-jaf- 1.0.jar:$DIR/tomcat5-servlet-2.4-api jar:$DIR/xalan-j2- serializer jar

Ilaria Bordino MG4J -- Managing GigaBytes for JavaPagina 14 Costruzione della prima collezione di documenti java it.unimi.dsi.mg4j.document.FileSetDocumentCollection --help FileDocumentFactory –e –f find Attori_e_attrici/ -iname \*.html -type f | java it.unimi.dsi.mg4j.document.FileSetDocumentCollection -f it.unimi.dsi.mg4j.document.HtmlDocumentFactory -p encoding=UTF-8 actors.collection find : e un comando linux che fornisce la lista dei file contenuti nella directory specificata. Restituisce un file per ogni linea.

Ilaria Bordino MG4J -- Managing GigaBytes for JavaPagina 15 La collezione di documenti La collezione actors.collection non contiene i file, ma soltanto i loro nomi (riferimenti). Linserimento o la cancellazione di file nellinsieme di documenti che vogliamo indicizzare, rende inconsistente la collezione.

Ilaria Bordino MG4J -- Managing GigaBytes for JavaPagina 16 Informazioni sulla collezione BeanShell: java source interpreter java bsh.Interpreter bsh % t = load(actors.collection"); bsh % print (t.size()); bsh % d = t.document(0); bsh % print (d.title()); bsh % print (d.uri()); bsh % exit();

Ilaria Bordino MG4J -- Managing GigaBytes for JavaPagina 17 La BeanShell E una shell java che permette di eseguire frammenti di codice java in maniera interattiva. Utile per scrivere prototipi o per il test di applicazioni. Download e tutorial:

Ilaria Bordino MG4J -- Managing GigaBytes for JavaPagina 18 Creazione dellindice Index: –java it.unimi.dsi.mg4j.tool.IndexBuilder --help java it.unimi.dsi.mg4j.tool.IndexBuilder --downcase -S actors.collection mycollection --downcase: tutti i termini vengono considerati minuscoli (case folding) -S: specifica la collection generata al punto precedente. Se non specificata, IndexBuilder legge lo standard input mycollection: basename che vogliamo assegnare allindice.

Ilaria Bordino MG4J -- Managing GigaBytes for JavaPagina 19 Fasi dellindicizzazione Passo 0 (opzionale): costruisce il dizionario dei termini. Genera i file basename.index e basename.properties Passo 1: costruisce lindice invertito: doc1: pos1,.., posM Passo intermedio (opzionale): produce un ordinamento lessicografico dei termini nellindice. Passo 2: sceglie il metodo di compressione e crea il basename.index ed inserisce altre voci in basename.properties -e specifica il metodo di compressione (attualmente implementati -code, -code, golub)

Ilaria Bordino MG4J -- Managing GigaBytes for JavaPagina 20 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 21 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 22 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 23 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 24 Il Web Server Query: it.unimi.dsi.mg4j.query.Query [--help] [(-c|- -collection) ] [(-t|--titleList) ] [-n|--no-sizes] [-h|--http] [(-i|-- itemclass) ] [(-m|--item-mime- type) ][(-p|-- port) ]basenameWeight1 basenameWeight2... basenameWeightN java it.unimi.dsi.mg4j.query.Query --help java it.unimi.dsi.mg4j.query.Query -h -i it.unimi.dsi.mg4j.query.FileSystemItem -c actors.collection mycollection-text mycollection-title

Ilaria Bordino MG4J -- Managing GigaBytes for JavaPagina 25 Interrogazione dellindice Interprete a linea di comando Web page :

Ilaria Bordino MG4J -- Managing GigaBytes for JavaPagina 26 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 27 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 28 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 JavaPagina 29 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 30 Interrogazioni complesse $score -- Seleziona uno scorer per i documenti es. $score BM25Scorer VignaScorer $mplex on -- Determina lindirizzamento della query a tutti gli indici disponibili $weigth – Cambia il peso degli indici es. $weigth text:1 title:3 $selector -- Seleziona max numero di intervalli e massima lunghezza di ogni intervallo. es. $selector 3 40

Ilaria Bordino MG4J -- Managing GigaBytes for JavaPagina 31 Scorer: esempi Opzione di default: BM25Scorer + VignaScorer $score BM25Scorer VignaScorer ConstantScorer $score ConstantScorer Uno scorer che assegna uno score costante (0 di default) a tutti i documenti

Ilaria Bordino MG4J -- Managing GigaBytes for JavaPagina 32 Scorer: esempi (2) CountScorer: uno scorer molto semplice che conta il numero di occorrenze di ogni termine all'interno del documento corrente moltiplicato per il peso del relativo indice $score CountScorer

Ilaria Bordino MG4J -- Managing GigaBytes for JavaPagina 33 Scorer: esempi (3) TfIdfScorer: uno scorer che implementa la formula di ranking TF/IDF. Il peso assegnato ad un documento che, in una collezione di N documenti, appare in f documenti, e`, per un documento di lunghezza l in cui il termine appare c volte: log(N/f) c /l $score TfIdfScorer

Ilaria Bordino MG4J -- Managing GigaBytes for JavaPagina 34 Score: esempi (4) DocumentRankScorer: Assegna un punteggio fisso ad ogni documento. Gli score sono letti da un file il cui nome deve essere passato al costruttore. $score DocumentRankScorer

Ilaria Bordino MG4J -- Managing GigaBytes for JavaPagina 35 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 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 36 Indicizzazione dei campi virtuali java it.unimi.dsi.mg4j.tool.URLMPHVirtualDocumentReso lver -o actors.urls actors-anchor.resolver costruisce il resolver di cui abbiamo bisogno per indicizzare il campo anchor. Ora possiamo ricostruire lindice chiedendo esplicitamente lindicizzazione dei campi virtuali: java it.unimi.dsi.mg4j.tool.IndexBuilder -a -v anchor:actors-anchor.resolver --downcase -S actors.collection mycollection

Ilaria Bordino MG4J -- Managing GigaBytes for JavaPagina 37 Interrogazioni sul campo anchor A questo punto possiamo riavviare il query engine e sottomettere query che richiedono i documenti che soddisfano determinate condizioni anche nel campo anchor java it.unimi.dsi.mg4j.query.Query -h -i FileSystemItem -c actors.collection mycollection-text mycollection-title mycollection-anchor

Ilaria Bordino MG4J -- Managing GigaBytes for JavaPagina 38 Utilizzo dei gap virtuali Per evitare la restituzione di documenti che contengono i termini della query in ancore differenti, si puo` imporre una prossimita` dei termini tenendo conto dello spazio virtuale (numero di parole vuote) lasciato tra due frammenti consecutivi. es. (claudia AND attrice)~64

Ilaria Bordino MG4J -- Managing GigaBytes for JavaPagina 39 Specificare gap virtuali differenti Si possono ottenere falsi negativi se la lunghezza di qualche ancora e` maggiore di quella scelta per lo spazio virtuale. In fase di indicizzazione e` possibile specificare una differente lunghezza per il gap virtuale. java it.unimi.dsi.mg4j.tool.IndexBuilder -a -g anchor:100 -v anchor:mycollection-anchor.resolver –downcase -S actors.collection mycollection

Ilaria Bordino MG4J -- Managing GigaBytes for JavaPagina 40 Realizzazione della mappa dei termini Il più semplice tipo di rappresentazione di un dizionario è la lista dei termini: un file di testo contentente un termine su ogni riga. Esempio: file.terms

Ilaria Bordino MG4J -- Managing GigaBytes for JavaPagina 41 Rappresentazione del dizionario Una rappresentazione più efficiente può essere ottenuta attraverso luso di una MPH (Unsigned Minimal Perfect Hash), una struttura dati molto efficiente che può essere utilizzata per rispondere alla domanda: Qual è lindice del termine XXX ? java it.unimi.dsi.mg4j.util.MinimalPerfectHash -s -o basename.terms basename.mph

Ilaria Bordino MG4J -- Managing GigaBytes for JavaPagina 42 Rappresentazione del dizionario La struttura Unsigned Minimal Perfect Hash è in grado di rispondere correttamente alla domanda Qual è lindice del termine XXX solo per I termini che compaiono veramente nel dizionario. Se si ha bisogno non solo di mappare i termini in indici ma anche di determinare se un termine è davvero presente nel dizionario occorre usare la struttua SMPH (Signed Minimal Perfect Hash) java it.unimi.dsi.mg4j.util.MinimalPerfectHash -c it.unimi.dsi.mg4j.util.HashCodeSignedMinimalPerfectHash -s -o basename.terms basename.smph

Ilaria Bordino MG4J -- Managing GigaBytes for JavaPagina 43 Minimal Perfect Hash: esempio di utilizzo import it.unimi.dsi.fastutil.io.BinIO; import it.unimi.dsi.mg4j.util.MinimalPerfectHash; MinimalPerfectHash myMap = (MinimalPerfectHash) BinIO.loadObject("basename.mph"); int pos = myMap.getNumber(pippo);

Ilaria Bordino MG4J -- Managing GigaBytes for JavaPagina 44 Signed Minimal Perfect Hash: esempio di utilizzo import it.unimi.dsi.fastutil.io.BinIO; import it.unimi.dsi.mg4j.util.MinimalPerfectHash; MinimalPerfectHash myMap = (MinimalPerfectHash) BinIO.loadObject("basename.smph"); int pos = myMap.getNumber(pippo);

Ilaria Bordino MG4J -- Managing GigaBytes for JavaPagina 45 Mappa dei termini Per rispondere ad una wildcard query occorre utilizzare una term map, una struttura dati che è in grado di rispondere efficientemente alla domanda Qual è lindice dei termini che iniziano con XXX. Se i termini sono ordinati lessicograficamente la risposta è costituita da due interi, gli indici del primo e dellultimo termine che soddisfano la proprietà. java it.unimi.dsi.mg4j.util.ImmutableExternalPrefixDictiona ry -b4Ki -o basename.urls basename.dict

Ilaria Bordino MG4J -- Managing GigaBytes for JavaPagina 46 Term Map: esempio di utilizzo La mappa costruita consente di effettuare il mapping tra termini e indici in entrambe le direzioni. import it.unimi.dsi.fastutil.io.BinIO; import it.unimi.dsi.mg4j.util.ImmutableExternalPrefixDictionary; ImmutableExternalPrefixDictionary ext = (ImmutableExternalPrefixDictionary)BinIO.loadObject("termini.dict");

Ilaria Bordino MG4J -- Managing GigaBytes for JavaPagina 47 Esercizio Ripetere l'esercitazione utilizzando la collezione HTMLDIS.