Riassunto analitico
La realizzazione di un motore di ricerca basato su keyword operante su database relazionali è un tema di ricerca che, nonostante sia oggetto di studio da oltre 15 anni, presenta ancora numerosi problemi aperti. Evidenza di questo è il fatto che non esiste nessuna applicazione, se non prototipale e frutto di una mera esperienza di ricerca, che permetta di ottenere questo risultato. Tuttavia, l'esigenza di poter interrogare una sorgente strutturata mediante keyword rappresenta un aspetto ricorrente in una grande varietà di scenari. Si è quindi pensato che potesse essere fortemente innovativa la realizzazione di un sistema che applicasse ai dati strutturati le tecniche di ricerca sviluppate e utilizzate con successo in molteplici ambiti commerciali dall'information retrieval a documenti non strutturati. Il sistema in questione si compone in particolare di due componenti principali. Il primo è un componente di basso livello che si propone la realizzazione di una vista integrata della base di dati e che risulta indispensabile per trasformare l'informazione contenuta nel database in qualcosa di simile ad una collezione di documenti. Su questa collezione opererà poi un secondo componente di più alto livello, corrispondente ad un motore di ricerca basato su keyword, il cui scopo è quello di estrarre, tramite un approccio di information retrieval, i documenti di interesse in funzione della query proposta in ingresso. Il lavoro di tesi si è quindi focalizzato principalmente sulla realizzazione del primo componente. La trasformazione di un database relazionale in un insieme di documenti tuttavia non è una operazione semplice, diretta ed univoca. Essa richiede la realizzazione di una destrutturazione delle informazioni memorizzate all'interno della base di dati considerata per adottare un'unità logica di rappresentazione dei dati che sia compatibile con quella tipicamente utilizzata nell'information retrieval (prevalentemente documenti). La soluzione proposta per realizzare tale processo di “adattamento strutturale” del formato di rappresentazione dei dati consiste nell'adozione e nell'implementazione dell'operatore di full disjunction. Esso corrisponde ad un'estensione associativa del full outer join ad un numero arbitrario di relazioni, il cui scopo è quello di massimizzare le combinazioni di dati preservando al contempo l'intero contenuto informativo della sorgente di informazioni considerata. Sebbene tale operatore sia predisposto a generare unità logiche informative impiegabili alla stregua di documenti indicizzabili e interrogabili tramite tecniche di information retrieval, la sua complessità intrinseca lo rende difficilmente applicabile nel caso di database di grandi dimensioni. Si è quindi cercato di ottimizzare il suo funzionamento tramite l'impiego di moderni paradigmi di programmazione parallela. In particolare si è usufruito del recente framework Apache Spark per sviluppare una serie di algoritmi che riescono in maniera progressiva a produrre sempre più efficientemente l'insieme delle full disjunction richiesto. Per venire incontro ad esigenze più stringenti di rapido accesso a specifiche informazioni d'interesse, sono state inoltre esaminate ed implementate una serie di soluzioni approssimate, le quali si limitano a produrre un sottoinsieme delle full disjunction esistenti, prediligendo le combinazioni di informazioni più rilevanti. A tal proposito si è usufruito del concetto di Pointwise Mutual Information per definire una misura di coesione tra le relazioni del database e quindi limitare il calcolo delle combinazioni a quelle maggiormente coese. Infine sono state condotte una serie di prove sperimentali, le quali hanno confermato l'efficacia e l'efficienza delle soluzioni proposte.
|