MG4J – Managing GigaBytes for Java Indicizzazione ed interrogazione di una collezione di documenti Esercitazione Ilaria Bordino Yahoo! Research, Barcelona.

Slides:



Advertisements
Presentazioni simili
Dipartimento di Ingegneria Idraulica e Ambientale - Universita di Pavia 1 Caduta non guidata di un corpo rettangolare in un serbatoio Velocità e rotazione.
Advertisements

1 MeDeC - Centro Demoscopico Metropolitano Provincia di Bologna - per Valutazione su alcuni servizi erogati nel.
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.
/ fax
1 Pregnana Milanese Assessorato alle Risorse Economiche Bilancio Preventivo P R O P O S T A.
Interfacce Java.
JPA Overview della tecnologia. Java Persistence Architecture Definita nella JSR-220 EJB 3.0 ( Tentativo di unificare EJB2.1 con.
1 Processi e Thread Processi Thread Meccanismi di comunicazione fra processi (IPC) Problemi classici di IPC Scheduling Processi e thread in Unix Processi.
Frontespizio Economia Monetaria Anno Accademico
1 Tavolo del Patto per la crescita intelligente, sostenibile e inclusiva Il ricorso agli ammortizzatori sociali nei territori colpiti dagli eventi sismici.
Implementazione dell algortimo di Viterbi attraverso la soluzione del problema di cammino mi- nimo tramite software specifico. Università degli studi di.
Un DataBase Management System (DBMS) relazionale client/server.
MySQL Esercitazioni. Ripasso Connessione a MySQL. Creazione delle basi di dati e delle tablelle. Inserimento dei dati. Interrogazioni.
Ordini Parziali - Reticoli
EJB Getting started Database: MySql Application Server: Pramati Server Ambiente di sviluppo: Pramati Studio 3 Applicazione esempio: Logon Trento, 30/10/2002.
HDM Information Design notation v.4. HDM Information Design.
Programmazione 1 9CFU – TANTE ore
Ufficio Studi UNIONCAMERE TOSCANA 1 Presentazione di Riccardo Perugi Ufficio Studi UNIONCAMERE TOSCANA Firenze, 19 dicembre 2000.
1. Conoscere luso delle collezioni in Java Comprendere le principali caratteristiche nelle varie classi di Collection disponibili Saper individuare quali.
Managing Gigabytes for Java MG4J Indicizzazione ed interrogazione di basi di documenti Ilaria Bordino e Debora Donato.
MG4J – Managing GigaBytes for Java Indicizzazione ed interrogazione di una collezione di documenti Esercitazione Ilaria Bordino Sapienza Università di.
Ranking di pagine Web Ilaria Bordino, Yahoo! Research Barcelona
MG4J – Managing GigaBytes for Java Indicizzazione ed interrogazione di basi documentali Ilaria Bordino Yahoo! Research, Barcelona.
Programming with JXTA Hello World Peer discovery Peer Group discovery Creating Peer group Joining a Peer Group.
6.6Ordinamento di Vettori Ordinamento di dati –Applicazione computazionale importante –Virtualmente ogni organizzazione deve ordinare dei dati Enormi quantità
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.
2000 Prentice Hall, Inc. All rights reserved. 1 Capitolo 6: Classi e astrazione dati 1.Introduzione 2.Definizione delle strutture 3.Accedere ai membri.
FONDAMENTI DI INFORMATICA III WfMC-1. FONDAMENTI DI INFORMATICA III WfMC-2 WFMC Cose WfMC Workflow Management Coalition (WfMC), Brussels, è unorganizzazione.
Sequence. CREARE UNA SEQUENCE CREATE SEQUENCE nome [INCREMENT BY n] [START WITH n] [MAXVALUE n | NOMAXVALUE] [MINVALUE n | NOMINVALUE] [CYCLE | NOCYCLE]
PRODOTTO CARTESIANO Otteniamo un prodotto cartesiano quando: viene omessa la condizione di join una condizione di join non è valida tutte le righe della.
FUNZIONI DI GRUPPO Le funzioni di gruppo operano su un set di record restituendo un risultato per il gruppo. AVG ([DISTINCT|ALL] n) media, ignora i valori.
Constraints.
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.
CORSO TECNICO R.C.A. ELABORATO PERITALE
Un esempio: Registrazione e lettura di dati in un file
Professional Users. Per poter lavorare sul Dizionario, bisogna registrarsi come Utente Professionale – Professional User (solo.
Muoversi tra le finestre
JavaScript Lezione 5 Tipizzazione ed operazioni tra tipi diversi Istruzioni di input.
Filtered Index and Statistics Filtered Indexes Sergio Govoni
PROGETTO “NASTRO FERMI”
Tutorial relativo al Mio EBSCOhost. Benvenuti al tutorial dedicato a Mio EBSCOhost, verranno fornite le istruzioni per la configurazione e lutilizzo ottimizzato.
Modulo 1 bis Menù Incolla Esercitazione Un computer è quasi umano, a parte il fatto che non attribuisce i propri errori a un altro computer. (Anonimo)
Moduli o Form I Moduli permettono all'utente di immettere informazioni...
Fondamenti di Informatica Corsi di Laurea in Ingegneria Gestionale Canale AL ESERCITAZIONE 6 ARGOMENTI: LAVORARE CON CLASSI METODI DELLISTANZA, COSTRUTTORI.
INTERNET Internet è una rete a livello mondiale che permette alle persone di comunicare ed ad accedere a banca dati da qualunque parte del mondo e su qualunque.
INTERNET Antonio Papa Classe 2^ beat I.S.I.S. G. Meroni a.s. 2007/2008.
1 Negozi Nuove idee realizzate per. 2 Negozi 3 4.
ISOIVA (LOCALE) TO ISOIVA (WEB) RIPARTIZIONE INFORMATICA UFFICIO APPLICATIVI AMMINISTRATIVI 13/04/2011 UNIVERSITÀ DEGLI STUDI DI FERRARA 1.
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.
Bando Arti Sceniche. Per poter procedere è indispensabile aprire il testo del Bando 2ROL - Richieste On Line.
24 aprile 2002 Avvisi: Risultati 1 o Esonero: (entro) lunedi 27 disponibili nella pag. WEB, ma anche esposti nella bacheca fuori dal corridoio 2 o dente,
Installazione di Drupal su Linux (sistemista) Installazione step-by-step e note.
21 marzo 2002 (ri-)Avvisi: Giovedi 28 marzo la lezione e sospesa. Nuovo indirizzo di Spedire messaggi e esercizi solo.
SUBQUERY Chi ha un salario maggiore di quello di Abel? Occorre scomporre la query in due sotto problemi: MAIN : quali impiegati hanno un salario maggiore.
Bando di Residenza Cap Scheda ENTE 3ROL - Richieste On Line.
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.
-17 Aspettative economiche – Europa Settembre 2013 Indicatore > +20 Indicatore 0 a +20 Indicatore 0 a -20 Indicatore < -20 Unione Europea Totale: +6 Indicatore.
Introduzione al linguaggio C. Cos’e’ il C? Il C e’ un linguaggio ad alto livello Un compilatore C prende in input un file contenente codice sorgente C.
Collection & Generics in Java
Fondamenti di informatica T-A Esercitazione 7 : Collezioni AA 2012/2013 Tutor : Domenico Di Carlo.
Sistemi di elaborazione dell’informazione Modulo 3 -Protocolli applicativi Unità didattica 4 - Protocolli del Web Ernesto Damiani Lezione 3 – Esempi HTTP.
JDBC Java DataBase Connectivity SISTEMI ITIS B. CASTELLI Anno Scolastico
1 Acceleratori e Reattori Nucleari Saverio Altieri Dipartimento di Fisica Università degli Studi - Pavia
IL GIOCO DEL PORTIERE CASISTICA. Caso n. 1 Il portiere nella seguente azione NON commette infrazioni.
MG4J -- Managing GigaBytes for Java Pagina 1 MG4J – Managing GigaBytes for Java Indicizzazione ed interrogazione di basi documentali Ilaria Bordino Ida.
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 Yahoo! Research, 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 CLASSPATH Scaricare e scompattare MG4J e le dipendenze necessarie: Copiare tutti i file.jar in una directory a vostra scelta Scrivere in un file set-classpath.sh le righe seguenti: export DIR= your_directory export CLASSPATH=.:$DIR/dsiutils-2.0.jar:$DIR/fastutil-6.4.jar:$DIR/fontbox jar:$DIR/jakarta-commons-collections jar:$DIR/jakarta-commons- configuration-1.4.jar:$DIR/jakarta-commons-digester-1.8.jar:$DIR/jakarta-commons- io-1.4.jar:$DIR/jakarta-commons-lang-2.3.jar:$DIR/jakarta-commons-logging- 1.1.jar:$DIR/javacc-5.0.jar:$DIR/jetty jar:$DIR/jetty6-html jar:$DIR/jetty6-util jar:$DIR/jsap-2.1.jar:$DIR/junit4-4.5.jar:$DIR/log4j jar:$DIR/mailapi jar:$DIR/mg4j-4.0.jar:$DIR/pdfbox jar:$DIR/sux4j- 3.0.jar:$DIR/tagsoup jar:$DIR/tika-core-0.7.jar:$DIR/tika-parsers- 0.7.jar:$DIR/tomcat5-servlet-2.4-api jar:$DIR/velocity-1.5.jar:$DIR/velocity- tools-1.4.jar source set-classpath.sh per settare il classpath nella shell corrente (per settaggio permanente aggiungere le righe sopra al.bashrc)

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 -name *.html | 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 litero 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.URLMPHVirtualDocumentResol ver -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 monotone minimal perfect hash function, una struttura dati molto compatta che può essere utilizzata per rispondere alla domanda: Qual è lindice del termine XXX ? Tale mappa può essere costruita a partire da una lista ordinata di termini java it.unimi.dsi.sux4j.mph.MinimalPerfectHashFunction titles.mph mycollection-title.terms

Ilaria Bordino MG4J -- Managing GigaBytes for JavaPagina 42 Rappresentazione del dizionario La correttezza della risposta restituita da una MinimalPerfectHash è garantita solo per I termini efffettivamente presenti nel dizionario. Se non si è sicuri che la struttura venga interrogata utilizzando solo termini del dizionario, occorre utilizzare una funzione firmata, che utlizza uno speciale valore di ritorno (-1) per segnalare il fatto che un termine non esiste allinterno della mappa. java it.unimi.dsi.util.ShiftAddXorSignedStringMap titles.mph titles.map mycollection-title.terms

Ilaria Bordino MG4J -- Managing GigaBytes for JavaPagina 43 Esempio di utilizzo import it.unimi.dsi.fastutil.io.BinIO; import it.unimi.dsi.fastutil.objects.Object2LongFunction;; Object2LongFunction url2node = (Object2LongFunction ) BinIO.loadObject( "titles.mph" ); long node = url2node.getLong(audrey);

Ilaria Bordino MG4J -- Managing GigaBytes for JavaPagina 44 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.ImmutableExternalPrefixDictionary -b4Ki –o mycollection-title.terms mycollection-title.dict

Ilaria Bordino MG4J -- Managing GigaBytes for JavaPagina 45 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 46 Esercizio Ripetere l'esercitazione utilizzando la collezione HTMLDIS.