31
Managing Gigabytes for Java MG4J Indicizzazione ed Indicizzazione ed interrogazione di basi di interrogazione di basi di documenti documenti Ilaria Bordino e Debora Donato

Managing Gigabytes for Java MG4J Indicizzazione ed interrogazione di basi di documenti Ilaria Bordino e Debora Donato

Embed Size (px)

Citation preview

Page 1: Managing Gigabytes for Java MG4J Indicizzazione ed interrogazione di basi di documenti Ilaria Bordino e Debora Donato

Managing Gigabytes for JavaMG4J

Indicizzazione ed interrogazione di Indicizzazione ed interrogazione di basi di documentibasi di documenti

Ilaria Bordino e Debora Donato

Page 2: Managing Gigabytes for Java MG4J Indicizzazione ed interrogazione di basi di documenti Ilaria Bordino e Debora Donato

Informazioni Generali

• E-mail: [email protected] [email protected]

• Ricevimento: momentaneamente non possibile :)

Page 3: Managing Gigabytes for Java MG4J Indicizzazione ed interrogazione di basi di documenti Ilaria Bordino e Debora Donato

MG4J

• È un tool sviluppato presso il Dipartimento di Scienza della Informazione della Universitá di Milano Disponibile gratuitamente;

• Webpage: http://mg4j.dsi.unimi.it

Page 4: Managing Gigabytes for Java MG4J Indicizzazione ed interrogazione di basi di documenti Ilaria Bordino e Debora Donato

Addizionare al classpath• DIR=usr/share/java

• $DIR/mg4j/BeanShell/bsh-2.0b2.jar:$DIR/mg4j/mg4j-1.1.2.jar:$DIR/mg4j/colt-1.2.0.jar:$DIR/mg4j/jakarta-commons-collections-3.1.jar:$DIR/mg4j/jakarta-commons-configuration-1.2.jar:$DIR/mg4j/jal-20031117.jar:$DIR/mg4j/jsap-2.0.jar:$DIR/mg4j/mysql-connector-java.jar:$DIR/mg4j/fastutil5-5.0.9.jar:$DIR/mg4j/jakarta-commons-io-1.2.jar:$DIR/mg4j/javacc-4.0.jar:$DIR/mg4j/libreadline-java.jar:$DIR/mg4j/pdfbox-0.7.1.jar:$DIR/mg4j/gnu.getopt.jar:$DIR/mg4j/jakarta-commons-lang-2.1.jar:$DIR/mg4j/javamail/mailapi.jar:$DIR/mg4j/servletapi5.jar:$DIR/mg4j/jaf.jar:$DIR/mg4j/jakarta-commons-logging-1.1.jar:$DIR/mg4j/jetty5/jetty5.jar:$DIR/mg4j/mstor.jar:$DIR/mg4j/tagsoup.jar:$DIR/mg4j/log4j-1.2.14.jar:$DIR/mg4j/velocity-1.4.jar:$DIR/mg4j/classpathx-jaf-1.0.jar:$DIR/mg4j/tomcat5-servlet-2.4-api-5.5.20.jar:$DIR/mg4j/xalan-j2-serializer-2.7.0.jar

Page 5: Managing Gigabytes for Java MG4J Indicizzazione ed interrogazione di basi di documenti Ilaria Bordino e Debora Donato

MG4J

• Permette l’indicizzazione e l’interrogazione di collezioni di documenti di grandi dimensioni;

• INPUT: serie di documenti omogenei (dello stesso tipo)

• OUTPUT: indice invertito

• USO: Permette di effettuare semplici interrogazioni sulla collezione di documenti indicizzata

Page 6: Managing Gigabytes for Java MG4J Indicizzazione ed interrogazione di basi di documenti Ilaria Bordino e Debora Donato

Architettura (Pacchetti Principali)• Document

– Document– DocumentCollection– FileSetDocumentCollection– DocumentFactory

• Index• Query

– HttpFileServer

• Documentation: http://mg4j.dsi.unimi.it/docs/• Manual: http://mg4j.dsi.unimi.it/man/manual.pdf

Page 7: Managing Gigabytes for Java MG4J Indicizzazione ed interrogazione di basi di documenti Ilaria Bordino e Debora Donato

Document

• Interface definita in it.unimi.dsi.mg4j.document

• Un documento è composto da un numero di campi che dipende dal tipo di documento;

• Per esempio:

– E-mail: from, to, data, subject, body

– Pagina html: title, url, body

Page 8: Managing Gigabytes for Java MG4J Indicizzazione ed interrogazione di basi di documenti Ilaria Bordino e Debora Donato

Interface Document• Definita in it.unimi.dsi.mg4j.document

• Ogni classe che implementa Document rappresenta un singolo documento indicizzabile.

Page 9: Managing Gigabytes for Java MG4J Indicizzazione ed interrogazione di basi di documenti Ilaria Bordino e Debora Donato

Interface DocumentCollection• Definita in it.unimi.dsi.mg4j.document

• Una collection e’ una collezione di documenti accessibili in modo casuale.

Page 10: Managing Gigabytes for Java MG4J Indicizzazione ed interrogazione di basi di documenti Ilaria Bordino e Debora Donato

Class FileSetDocumentCollection• Definita in it.unimi.dsi.mg4j.document

• Una DocumentCollection corrisponde a un insieme di file specificati in forma di array.

Page 11: Managing Gigabytes for Java MG4J Indicizzazione ed interrogazione di basi di documenti Ilaria Bordino e Debora Donato

Interface DocumentFactory• Definita in it.unimi.dsi.mg4j.document

• Una factory esegue il parsing di documenti omogenei.

Page 12: Managing Gigabytes for Java MG4J Indicizzazione ed interrogazione di basi di documenti Ilaria Bordino e Debora Donato

Istanze della DocumentFactory

• CompositeDocumentFactory• HtmlDocumentFactory• IdentityDocumentFactory• MailDocumentFactory• PdfDocumentFactory• ReplicatedDocumentFactory

Page 13: Managing Gigabytes for Java MG4J Indicizzazione ed interrogazione di basi di documenti Ilaria Bordino e Debora Donato

Class HttpFileServer

• Definita in it.unimi.dsi.mg4j.query

• Implementazione di un server http che permette di interrogare una collezione indicizzata

Page 14: Managing Gigabytes for Java MG4J Indicizzazione ed interrogazione di basi di documenti Ilaria Bordino e Debora Donato

Class Query

Interprete a linea di comando per l’interrogazione della collezione indicizzata.

Page 15: Managing Gigabytes for Java MG4J Indicizzazione ed interrogazione di basi di documenti Ilaria Bordino e Debora Donato

Costruire la prima collezione di documenti

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

Page 16: Managing Gigabytes for Java MG4J Indicizzazione ed interrogazione di basi di documenti Ilaria Bordino e Debora Donato

Costruire la prima collezione di documenti

• java it.unimi.dsi.mg4j.document.FileSetDocumentCollection --help

• FileDocumentFactory:FileDocumentFactory –e <encoding> –f <factory> <collection-name>

• 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.

Page 17: Managing Gigabytes for Java MG4J Indicizzazione ed interrogazione di basi di documenti Ilaria Bordino e Debora Donato

La Collection

• La collezione actors.collection non contiene i file, ma soltanto i loro nomi (riferimenti).

• L’inserimento o la cancellazione di file nell’insieme di documenti che vogliamo indicizzare, rende inconsistente la collection.

Page 18: Managing Gigabytes for Java MG4J Indicizzazione ed interrogazione di basi di documenti Ilaria Bordino e Debora Donato

Informazioni sulla Collection

• BeanShell: java source interpreter

• java bsh.Interpreter• bsh % t = load("htmlshare.collection");• bsh % print (t.size());• bsh % d = t.document(0);• bsh % print (d.title());• bsh % print (d.uri());• bsh % exit();

Page 19: Managing Gigabytes for Java MG4J Indicizzazione ed interrogazione di basi di documenti Ilaria Bordino e Debora Donato

La BeanShell

• E’ una shell java che permette di eseguire iterativamente frammenti di codice java.

• Utile per scrivere prototipi o per il test di applicazioni.

• E’ gia inclusa nell’insieme dei jar scaricabili dalla pagina del corso.

• Download e tutorial: http://www.beanshell.org/intro.html

Page 20: Managing Gigabytes for Java MG4J Indicizzazione ed interrogazione di basi di documenti Ilaria Bordino e Debora Donato

Creazione dell’indice • Index:

– java it.unimi.dsi.mg4j.tool.Index --help

• java -Xmx512M it.unimi.dsi.mg4j.tool.Index --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, Index legge lo standard input

• mycollection: basename che vogliamo assegnare all’indice.

Page 21: Managing Gigabytes for Java MG4J Indicizzazione ed interrogazione di basi di documenti Ilaria Bordino e Debora Donato

Fasi dell’indicizzazione• Zeroth pass (opzionale): costruisce il dizionario dei

termini. Genera i file basename.index e basename.properties

• First pass: costruisce l’indice invertito:doc1: pos1,.., posM

• Middle pass (opzionale): produce un ordinamento lessicografico dei termini nell’indice.

• Second pass: 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)

Page 22: Managing Gigabytes for Java MG4J Indicizzazione ed interrogazione di basi di documenti Ilaria Bordino e Debora Donato

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 23: Managing Gigabytes for Java MG4J Indicizzazione ed interrogazione di basi di documenti Ilaria Bordino e Debora Donato

• 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 24: Managing Gigabytes for Java MG4J Indicizzazione ed interrogazione di basi di documenti Ilaria Bordino e Debora Donato

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

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

Page 25: Managing Gigabytes for Java MG4J Indicizzazione ed interrogazione di basi di documenti Ilaria Bordino e Debora Donato

• 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 26: Managing Gigabytes for Java MG4J Indicizzazione ed interrogazione di basi di documenti Ilaria Bordino e Debora Donato

Il web server• Query: it.unimi.dsi.mg4j.query.Query [--help] [(-c|--

collection) <collection>] [(-t|--titleList) <titleList>] [-n|--no-sizes] [-h|--http] [(-i|--itemclass) <itemClass>] [(-m|--item-mime-type) <itemMimeType>][(-p|--port) <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

Page 27: Managing Gigabytes for Java MG4J Indicizzazione ed interrogazione di basi di documenti Ilaria Bordino e Debora Donato

Interrogazione dell'indice

• Interprete a linea di comando

• Web page : http://localhost:4242/Query

Page 28: Managing Gigabytes for Java MG4J Indicizzazione ed interrogazione di basi di documenti Ilaria Bordino e Debora Donato

Querying MG4J• Simple query: cerca le 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 29: Managing Gigabytes for Java MG4J Indicizzazione ed interrogazione di basi di documenti Ilaria Bordino e Debora Donato

• 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 30: Managing Gigabytes for Java MG4J Indicizzazione ed interrogazione di basi di documenti Ilaria Bordino e Debora Donato

Querying MG4J con asterisco (wild card)

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

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

Page 31: Managing Gigabytes for Java MG4J Indicizzazione ed interrogazione di basi di documenti Ilaria Bordino e Debora Donato

Esercizi: compressione

• Il tipo di compressione puo` essere indicato con –c codeType–c codeType. Le codifiche disponibili in MG4J sono:– GAMMA: coding– DELTA: delta coding