Vai alla pagina precedente
Vai alla pagina successiva


L'interfaccia utente


L'interfaccia utente é stata sviluppata in maniera piuttosto semplice, senza eccessiva ricercatezza sia dal punto di vista grafico che dei contenuti, ed é divisa in due sezioni: la ricerca semplice e la ricerca avanzata (N.B.: i collegamenti sono stati rimossi perche´ non utilizzabili).

La prima utilizza un unico campo per l'immissione della query di richiesta e sfrutta il fulltext index "generale" creato precedentemente nella base di dati MySql.

La seconda utilizza cinque campi corrispondenti ai rimanenti indici creati in MySql e due campi aggiuntivi riguardanti l'indirizzo ip e il nome dell'host.
Notiamo innanzi tutto che gli indici creati possono sembrare ridondanti (tutti tranne "commento" comprendono le colonne "nome_file" e "path"). Questa scelta è dovuta sia all'elevato numero di valori mancanti che all'idea che differenti persone possano catalogare sul proprio computer i files mp3 in modo vario (una cartella per ogni cantante, una cartella per ogni album, il nome dell'artista nel nome del file, ...).
I due campi aggiuntivi senza indice ("nome_file" e "path") differiscono dagli altri principalmente per la quantità di informazioni differenti che hanno al loro interno: se per esempio possiamo supporre che i nomi dei files siano differenti uno dall'altro, non possiamo pensare la stessa cosa per il nome dell'host (per ogni host ci saranno centinaia o migliaia di righe). Inoltre gli indirizzi ip sono composti da quattro numeri compresi tra 0 e 255, il che implica che ogni "parola" è composta da tre cifre (la lunghezza minima di una stringa perché sia presa in considerazione durante l'indicizzazione é per default quattro). Per questo la ricerca dell'indirizzo ip e del nome dell'host non avvengono tramite indice, ma con una semplice richiesta del tipo "where (ip like '%127.0.0.1%')".
La ricerca avanzata può servire principalmente a due scopi: restringere le ricerche in caso di numero eccessivo di risposte (il codice php in pratica effettua una richiesta a MySql concatenando i singoli parametri richiesti con una serie di AND) o effettuare una ricerca che coinvolga anche uno specifico computer tramite la richiesta di un certo indirizzo ip o di un certo nome dell'host (tale possibilità non é presente nella modalità di ricerca semplice).

A loro volta queste due sezioni si dividono in interfaccia utente di input, nella quale l'utente riempie un form descrivendo i parametri della ricerca che intende effettuare, e di output, nella quale viene visualizzato il risultato della ricerca effettuata.
Il codice php di output effettua una semplice connessione al DBMS (MySql) con alcuni parametri di default (username, password, database, ...) ed effettua una ricerca nella tabella "Mp3" cercando le parole chiave che l'utente ha scritto nel form dell'interfaccia.
La query utilizzata per interrogare il DBMS é una semplice richiesta nella forma "select * from mp3 where (match(artista,path,nome_file) against('litfiba')) and ...", dove le parole chiave presenti nella clausola "where" (in questo caso 'litfiba') sono quelle scritte dall'utente.
L'output, graficamente, si presenta come una semplice tabella in cui sono descritti i campi ritornati da MySql, associati ad un collegamento al file (se questo è disponibile in linea).
Una possibile futura implementazione potrebbe essere l'ordinamento dell'output anche in base alla disponibilità o meno nel download del file trovato.
In fondo alla pagina di output é possibile anche leggere il numero di righe ottenute dalla ricerca (variabile $numero nel codice php).

Per quel che riguarda l'interrogazione del DBMS é stato scelta la modalità di default (e non la ricerca "in boolean mode") per due motivi: innanzi tutto perché MySql é naturalmente basato sulla struttura vettoriale; in secondo luogo perché cosí otteniamo un ordinamento molto più sfumato rispetto alla semplice presenza/assenza tipica del modello booleano.
L'ordinamento ottenuto tramite semplice interrogazione offre inoltre un output già ordinato in base alla rilevanza delle parole cercate. Questa rilevanza si basa sia sul numero di parole nella riga, sia sul numero totale di parole nella collezione e sul numero di righe che contengono una particolare stringa.
Se per esempio una parola cercata é rara, avrà un peso alto. Al contrario se una stringa é molto frequente (senza superare la soglia del 50% della presenza nelle righe che porterebbe all'inserimento della parola nella stopword list) il suo peso sarà minore. Il peso delle parole é poi combinato per calcolare la rilevanza della riga.
Nelle ultime versioni di MySql (dalla 4.1.1) la ricerca full-text supporta anche la "query expansion" (blind query expansion). Nel nostro caso, poiché non ci troviamo ad analizzare documenti di tipo testuale, questo tipo di ricerca porterebbe solo ad un allungamento dell'output e ad un aumento dei documenti (file mp3) reperiti non significativi.
Un possibile sviluppo futuro potrebbe essere una implementazione tipo Amazon: se una persona é interessata ad un certo cantante potrebbe (sulla base di conoscenza acquisita dai precedenti utenti) essere anche interessato ad un altro cantante che fa musica simile. Questo richiederebbe però una struttura che va ben oltre la semplice "blind query expansion" offerta da MySql.

Vai alla pagina precedente
Vai alla pagina successiva






  Indice principale     Indice dei Programmi     Indice del Progetto di BDD(se)  

Data creazione: 17 Settembre 2010
Data ultima modifica: 30 Dicembre 2012