際際滷

際際滷Share a Scribd company logo
Progetto e sviluppo di un Search Component, nella
piattaforma Apache Solr,
per la classicazione semantica dei documenti
Relatore interno: Laureando:
Prof. Serafino Cicerone Enrico Santoro
Relatore esterno:
Ing. Paolo Cappuccini
Universit degli Studi dellAquila
Dipartimento di Ingegneria e Scienze dell'Informazione e Matematica
Tesi di Laurea Magistrale in Ingegneria Informatica e Automatica
Anno Accademico 2013-2014
Azienda committente: KDM
 Ha sede a Roma
 Opera nel settore dellICT
 Offre soluzioni e servizi
 Knowledge Management
 Gestione documentale
 Soluzioni gestionali aziendali
 
 Dal 2014 ha avviato progetti con lUniversit dellAquila
2
Il progetto assegnato
 Sviluppo e implementazione di tecniche ed ontologie per
Ricerche Enterprise
 Svolto in team:
1. Sviluppo del componente di ricerca in Solr
2. Implementazione di un editor di Thesaurus
3
Indice
 Apache Solr
 Architettura di Solr
 Principali funzionalit
 Inverted index
 Hierarchy Component
 Algoritmo
 Sviluppo in Solr
 Test
4
Apache Solr
5
 Applicazione Web
 Motore di ricerca full text
 Basato su Apache Lucene
 Libreria Java di indicizzazione e ricerca
 Open source
 REST API
 Client API
Solr: architettura
6
Panoramica delle funzionalit (1)
 Pagination
 Faceting
 Autosuggest
 Hit highlighting
 Geospatial Search
7
Panoramica delle funzionalit (2)
 Result grouping
 Flexing query support
 Importing rich document (Word, Pdf)
 Database integration
 Multilingual support
8
Inverted index (1)
9
Nessun risultato
Inverted index (2)
10
Inverted index (3)
11
Inverted index (4)
12
Inverted index (5)
13
new AND home
new OR home
new home
Chi usa Solr?
14
Hierarchy Component
 Clusterizzazione gerarchica dei documenti
 Input:
 N documenti
 Thesaurus
 Output:
 I documenti (N) raggruppati in cluster
 Cluster collegati semanticamente
 Vincolo di linearit
15
Algoritmi di clustering
16
Algoritmo sviluppato
17
Implementazione in Solr
 Hierarchy Component = Search Component
1. Aggiunta del componente alla configurazione
 solrconfig.xml
2. Creazione di un nuovo request handler
 /search
3. Implementazione di Hierarchy Component
 Classe Java: HierarchyComponent.java
 Librerie di Solr, API Solrj
18
Velocity Search UI
19
Hierachy in Velocity (1)
20
Hierachy in Velocity (2)
21
scienze sociali
Hierachy in Velocity (3)
22
scienze sociali -> scienze economiche
Test sulle performance (1)
23
Test sulle performance (2)
24
Conclusioni
 Studio approfondito di Apache Solr
 Componente di clusterizzazione gerarchica
 Hierarchy Component in Solr
 Vincolo di linearit
 Sviluppi futuri:
 Relazioni trasversali
 Relazioni di sinonimia
25
26
Grazie
per lattenzione

More Related Content

Similar to Tesi4 (20)

Funziona! allora non toccarlo, ovvero l'analisi d'infrastruttura in esercizio.
Funziona! allora non toccarlo, ovvero l'analisi d'infrastruttura in esercizio.Funziona! allora non toccarlo, ovvero l'analisi d'infrastruttura in esercizio.
Funziona! allora non toccarlo, ovvero l'analisi d'infrastruttura in esercizio.
Giuliano Latini
Azure saturday pn 2018 ml
Azure saturday pn 2018 mlAzure saturday pn 2018 ml
Azure saturday pn 2018 ml
Marco Zamana
Utilizzo di tecnologie big data per addestramento di metamodelli matematici p...
Utilizzo di tecnologie big data per addestramento di metamodelli matematici p...Utilizzo di tecnologie big data per addestramento di metamodelli matematici p...
Utilizzo di tecnologie big data per addestramento di metamodelli matematici p...
DavideFegez
CDays15 - AZ08 - DocumentDB: il NoSql secondo Azure
CDays15 - AZ08 - DocumentDB: il NoSql secondo AzureCDays15 - AZ08 - DocumentDB: il NoSql secondo Azure
CDays15 - AZ08 - DocumentDB: il NoSql secondo Azure
Davide Benvegn湛
VisualDDHub - final approach
VisualDDHub - final approachVisualDDHub - final approach
VisualDDHub - final approach
Martina Garofalo
Il caso CNR: la soluzione di Gestione Concorsi con Alfresco
Il caso CNR: la soluzione di Gestione Concorsi con AlfrescoIl caso CNR: la soluzione di Gestione Concorsi con Alfresco
Il caso CNR: la soluzione di Gestione Concorsi con Alfresco
Alfresco Software
DotNetToscana - Sessione TypeScript
DotNetToscana - Sessione TypeScriptDotNetToscana - Sessione TypeScript
DotNetToscana - Sessione TypeScript
Sinergia Totale
Intelligent Question Answering System nell'ambito del progetto di ricerca PIU...
Intelligent Question Answering System nell'ambito del progetto di ricerca PIU...Intelligent Question Answering System nell'ambito del progetto di ricerca PIU...
Intelligent Question Answering System nell'ambito del progetto di ricerca PIU...
Monica Daniele
A ciascuno il suo: archi, frecce e interfacce per servizi editoriali B2B e B2...
A ciascuno il suo: archi, frecce e interfacce per servizi editoriali B2B e B2...A ciascuno il suo: archi, frecce e interfacce per servizi editoriali B2B e B2...
A ciascuno il suo: archi, frecce e interfacce per servizi editoriali B2B e B2...
Architecta | Societ Italiana di Architettura dell'Informazione
ANALYSIS OF METHODS FOR PRODUCT INNOVATION: CLASSIFICATION OF PATENTS AND SC...
ANALYSIS OF METHODS FOR PRODUCT INNOVATION:  CLASSIFICATION OF PATENTS AND SC...ANALYSIS OF METHODS FOR PRODUCT INNOVATION:  CLASSIFICATION OF PATENTS AND SC...
ANALYSIS OF METHODS FOR PRODUCT INNOVATION: CLASSIFICATION OF PATENTS AND SC...
Roberto Nani
Android Frameworks for Geolocalized Apps Development: Diane, Hermes, Polaris/...
Android Frameworks for Geolocalized Apps Development: Diane, Hermes, Polaris/...Android Frameworks for Geolocalized Apps Development: Diane, Hermes, Polaris/...
Android Frameworks for Geolocalized Apps Development: Diane, Hermes, Polaris/...
Massimiliano Leone
Azure dayroma java, il lato oscuro del cloud
Azure dayroma   java, il lato oscuro del cloudAzure dayroma   java, il lato oscuro del cloud
Azure dayroma java, il lato oscuro del cloud
Riccardo Zamana
The Hitchhiker's Guide to the Azure Galaxy
The Hitchhiker's Guide to the Azure GalaxyThe Hitchhiker's Guide to the Azure Galaxy
The Hitchhiker's Guide to the Azure Galaxy
Nicol嘆 Carandini
Introduzione - Web design
Introduzione - Web designIntroduzione - Web design
Introduzione - Web design
gowow
Il progetto INNO: dal dato alla applicazione - Pierluigi Cau (CRS4)
Il progetto INNO: dal dato alla applicazione - Pierluigi Cau (CRS4)Il progetto INNO: dal dato alla applicazione - Pierluigi Cau (CRS4)
Il progetto INNO: dal dato alla applicazione - Pierluigi Cau (CRS4)
Sardegna Ricerche
際際滷 generazione automatica di siti con mappe geografiche
際際滷   generazione automatica di siti con mappe geografiche際際滷   generazione automatica di siti con mappe geografiche
際際滷 generazione automatica di siti con mappe geografiche
Martino Miani
Code Contracts and Generics: implementing a LINQ-enabled Repository
Code Contracts and Generics: implementing a LINQ-enabled RepositoryCode Contracts and Generics: implementing a LINQ-enabled Repository
Code Contracts and Generics: implementing a LINQ-enabled Repository
Andrea Saltarello
Presentazione bd2
Presentazione bd2Presentazione bd2
Presentazione bd2
Gino Farisano
WeWantWeb - WCF Data Services
WeWantWeb - WCF Data ServicesWeWantWeb - WCF Data Services
WeWantWeb - WCF Data Services
DomusDotNet
Il nuovo catalogo della rete URBS - La migrazione akoha
Il nuovo catalogo della rete URBS - La migrazione akohaIl nuovo catalogo della rete URBS - La migrazione akoha
Il nuovo catalogo della rete URBS - La migrazione akoha
Andrea Marchitelli
Funziona! allora non toccarlo, ovvero l'analisi d'infrastruttura in esercizio.
Funziona! allora non toccarlo, ovvero l'analisi d'infrastruttura in esercizio.Funziona! allora non toccarlo, ovvero l'analisi d'infrastruttura in esercizio.
Funziona! allora non toccarlo, ovvero l'analisi d'infrastruttura in esercizio.
Giuliano Latini
Azure saturday pn 2018 ml
Azure saturday pn 2018 mlAzure saturday pn 2018 ml
Azure saturday pn 2018 ml
Marco Zamana
Utilizzo di tecnologie big data per addestramento di metamodelli matematici p...
Utilizzo di tecnologie big data per addestramento di metamodelli matematici p...Utilizzo di tecnologie big data per addestramento di metamodelli matematici p...
Utilizzo di tecnologie big data per addestramento di metamodelli matematici p...
DavideFegez
CDays15 - AZ08 - DocumentDB: il NoSql secondo Azure
CDays15 - AZ08 - DocumentDB: il NoSql secondo AzureCDays15 - AZ08 - DocumentDB: il NoSql secondo Azure
CDays15 - AZ08 - DocumentDB: il NoSql secondo Azure
Davide Benvegn湛
VisualDDHub - final approach
VisualDDHub - final approachVisualDDHub - final approach
VisualDDHub - final approach
Martina Garofalo
Il caso CNR: la soluzione di Gestione Concorsi con Alfresco
Il caso CNR: la soluzione di Gestione Concorsi con AlfrescoIl caso CNR: la soluzione di Gestione Concorsi con Alfresco
Il caso CNR: la soluzione di Gestione Concorsi con Alfresco
Alfresco Software
DotNetToscana - Sessione TypeScript
DotNetToscana - Sessione TypeScriptDotNetToscana - Sessione TypeScript
DotNetToscana - Sessione TypeScript
Sinergia Totale
Intelligent Question Answering System nell'ambito del progetto di ricerca PIU...
Intelligent Question Answering System nell'ambito del progetto di ricerca PIU...Intelligent Question Answering System nell'ambito del progetto di ricerca PIU...
Intelligent Question Answering System nell'ambito del progetto di ricerca PIU...
Monica Daniele
ANALYSIS OF METHODS FOR PRODUCT INNOVATION: CLASSIFICATION OF PATENTS AND SC...
ANALYSIS OF METHODS FOR PRODUCT INNOVATION:  CLASSIFICATION OF PATENTS AND SC...ANALYSIS OF METHODS FOR PRODUCT INNOVATION:  CLASSIFICATION OF PATENTS AND SC...
ANALYSIS OF METHODS FOR PRODUCT INNOVATION: CLASSIFICATION OF PATENTS AND SC...
Roberto Nani
Android Frameworks for Geolocalized Apps Development: Diane, Hermes, Polaris/...
Android Frameworks for Geolocalized Apps Development: Diane, Hermes, Polaris/...Android Frameworks for Geolocalized Apps Development: Diane, Hermes, Polaris/...
Android Frameworks for Geolocalized Apps Development: Diane, Hermes, Polaris/...
Massimiliano Leone
Azure dayroma java, il lato oscuro del cloud
Azure dayroma   java, il lato oscuro del cloudAzure dayroma   java, il lato oscuro del cloud
Azure dayroma java, il lato oscuro del cloud
Riccardo Zamana
The Hitchhiker's Guide to the Azure Galaxy
The Hitchhiker's Guide to the Azure GalaxyThe Hitchhiker's Guide to the Azure Galaxy
The Hitchhiker's Guide to the Azure Galaxy
Nicol嘆 Carandini
Introduzione - Web design
Introduzione - Web designIntroduzione - Web design
Introduzione - Web design
gowow
Il progetto INNO: dal dato alla applicazione - Pierluigi Cau (CRS4)
Il progetto INNO: dal dato alla applicazione - Pierluigi Cau (CRS4)Il progetto INNO: dal dato alla applicazione - Pierluigi Cau (CRS4)
Il progetto INNO: dal dato alla applicazione - Pierluigi Cau (CRS4)
Sardegna Ricerche
際際滷 generazione automatica di siti con mappe geografiche
際際滷   generazione automatica di siti con mappe geografiche際際滷   generazione automatica di siti con mappe geografiche
際際滷 generazione automatica di siti con mappe geografiche
Martino Miani
Code Contracts and Generics: implementing a LINQ-enabled Repository
Code Contracts and Generics: implementing a LINQ-enabled RepositoryCode Contracts and Generics: implementing a LINQ-enabled Repository
Code Contracts and Generics: implementing a LINQ-enabled Repository
Andrea Saltarello
Presentazione bd2
Presentazione bd2Presentazione bd2
Presentazione bd2
Gino Farisano
WeWantWeb - WCF Data Services
WeWantWeb - WCF Data ServicesWeWantWeb - WCF Data Services
WeWantWeb - WCF Data Services
DomusDotNet
Il nuovo catalogo della rete URBS - La migrazione akoha
Il nuovo catalogo della rete URBS - La migrazione akohaIl nuovo catalogo della rete URBS - La migrazione akoha
Il nuovo catalogo della rete URBS - La migrazione akoha
Andrea Marchitelli

Tesi4

Editor's Notes

  • #2: Buongiorno a tutti, sono Enrico Santoro e sto per presentarvi il mio lavoro di tesi riguardante lo sviluppo di un componente di ricerca allinterno della piattaforma Apache Solr.
  • #3: Questo lavoro di tesi 竪 stato svolto in azienda; lazienda in questione 竪 la KDM la quale ha sede a Roma ed opera nel settore dellInformation and Communication Technology. Essa offre diverse soluzioni e servizi ai propri clienti, nellambito del Knowledge Management, della gestione documentale come la dematerializzazione dei processi e dei procedimenti, soluzioni gestionali per le aziende e altro ancora. Dallanno corrente la KDM ha intrapreso una collaborazione con la nostra facolt, proponendo diversi progetti agli studenti.
  • #4: Ed 竪 proprio in uno di questi progetti che si colloca il mio lavoro di tesi. Il progetto in questione riguarda lo sviluppo di una tecnica di ricerca basata sullutilizzo di ontologie, e limplementazione di uno strumento per la gestione delle ontologie stesse. Questo progetto 竪 stato assegnato ad un team di due persone; io mi sono occupato dello sviluppo vero e proprio del componente di ricerca, mentre il mio collega Antonio Delli Carpini si 竪 occupato della gestione dei Thesaurus utilizzati dal componente di ricerca stesso; e dei quali ce ne parler succesivamente.
  • #5: Dunque nel corso di questa presentazione vi parler嘆 prima di tutto di Apache Solr, poich竪 il grosso del lavoro 竪 riguardato proprio lo studio di questa potente piattaforma di ricerca. Vi mostrer嘆 quella che 竪 la suaarchitettura base, le sue principali funzionalit e peculiarit; successivamente vedremo quello che 竪 il suo principale punto di forza e ci嘆 lutilizzo di un indice inverso nelle operazioni di ricerca. Poi passer嘆 ad illustrarvi il componente di ricerca sviluppato chiamato Hierarchy Component, mostrandovi lalgoritmo di funzionamento, come 竪 stato sviluppato in Solr ed infine vedremo un esempio duso ed alcuni test sulle performance.
  • #6: Solr 竪 una piattaforma di ricerca fornita come applicazione web, che rappresenta un motore di ricerca full text basato su una libreria scritta interamente in Java per lindicizzazione e la ricerca di documenti, chiamata Apache Lucene. Quindi Lucene 竪 una libreria di ricerca, mentre Solr 竪 un applicazione web che utilizza la libreria Lucene. Caratteristica fondamentale 竪 che tale piattaforma 竪 open source. Inoltre essendo scritta interamente in Java, Solr ha il vantaggio di essere utilizzabile su qualsiasi sistema operativo. In figura vediamo un semplice utilizzo di Solr, dove unaltra web app interroga lindice di Lucene e Solr fornisce una risposta. Ovviamente sullindice vengono effettuate anche operazioni di aggiornamento e indicizzazione dei documenti. Solr fornisce inoltre delle rest api per richiede I propri servizi attraverso il protocollo http e restituendo la risposta in JSON o XML. Spesso gli sviluppatori preferiscono per嘆 accedere al servizio di Solr mediante delle librerie Client. A questo scopo Solr 竪 fornito di molte librerie Client in vari linguaggi. Ad esempio per il Java sono disponibili le API Solrj che sono state utilizzate nello sviluppo di questo lavoro.
  • #7: Esploriamo meglio quella che 竪 larchitettura di Solr Solr pu嘆 essere implementato in un qualsiasi servlet container, come ad esempio Tomcat o Jetty. Quando si effettua il download di Solr esso 竪 preconfigurato allutilizzo con Jetty. Solr supporta l'esecuzione di piu core, e quindi di piu indici, nello stesso ambiente Java, garantendo dunque una elevata flessibilit di utilizzo. Su ogni core possono essere effettuate operazioni di querying e updating sullindice. Per ogni indice sono presenti due file di configurazione molto importanti che sono lo schema.xml e solrconfig.xml. Lo schema contiene tutti I dettagli riguardanti la struttura dei documenti (I campi che contengono e I loro tipi) e viene utilizzato sia durante lindicizzazione degli stessi che durante la fase di interrogazione. Invece il file solrconfig.xml contiene I la maggior parte dei parametri per configurare Solr stesso.
  • #8: Per quanto riguarda le principali funzionalit di Solr, esse innanzitutto sono percepite in due differenti categorie: quelle riguardanti la User Experience, e quelle inerenti al data modeling. Per quanto concerne la user experience, Solr 竪 dotato di importanti funzionalit che consentono di fornire una soluzione di ricerca che facile da utilizzare, intuitiva e performante. Tra i principali componenti di questa categoria troviamo: - pagination: utile per servire il risultato delle richieste distribuito su diverse pagine; - faceting: fornisce agli utenti gli strumenti per affinare i criteri di ricerca e scoprire ulteriori informazioni categorizzando i risultati della ricerca in sottogruppi mediante lutilizzo delle faccette; autosuggest: permette agli utenti di vedere una lista di termini e frasi suggerite sulla base di documenti presenti nell'indice; Spell-checker: offre supporto alla correzione ortografica ed 竪 sempre pi湛 utile nell'era dei dispositivi mobili e persone in movimento; Hit highlighting: molto utile durante la ricerca di documenti che hanno una notevole quantit di testo, opich竪 竪 possibile andare ad evidenziare sezioni specifiche di ogni documento per migliorare la leggibilit; - Geospatial Search: Solr 竪 dotato del supporto per l'indicizzazione dei valori di longitudine e latitudine e restituisce i documenti per distanza geografica
  • #9: Per quanto riguarda invece le funzionalita di data-modeling abbiamo: - Result grouping: Solr consente di trattare piu documenti come un gruppo sulla base di alcune proprieta comuni condivise da tutti i documenti del gruppo; il classico esempio 竪 quello delle email dove tutte le mail di risposta ad un messaggio originale possono essere raggruppate. Flexing query support: Solr offre una serie di funzionalita per le interrogazioni tra cui i classici operatori logici AND, OR e NOT; intervalli per date e numeri, utilizzare una logica fuzzy, espressioni regolari e altro ancora Document clustering: permette di identificare gruppi di documenti che sono simili sulla base di alcune condizioni presenti in ciascun documento; - Importing rich document: Solr si integra con il progetto Apache Tika che supporta i formati di documento piu diffusi; Database integration: permette di integrare dati presenti in un database relazionale; Multilingual support: ovviamente Solr supporta tantissime lingue ed offre un rilevatore di lingua integrato
  • #10: Una importante caratteristica di Solr 竪 data dallutilizzo del cosiddetto indice inverso. Come detto precedentemente Solr fa uso della libreria di ricerca Apache Lucene; e questa libreria fa proprio uso di questa tecnica. Quindi Solr indirettamente fa uso di questa tecnica di ricerca. Vediamola attraverso un esempio, nel quale consideriamo dapprima lutilizzo di database relazionali per capirne meglio le differenze: supponiamo di avere una lista di titoli di alcuni libri; e vogliamo effettuare una ricerca per trovare libri che riguardano lacquisto di nuove case. Effettuando una query in questo modo non otteremo alcun risultato poich竪 nessun libro ha come titolo buying a new home.
  • #11: Quello che si pu嘆 pensare di fare allora 竪 di andare a ricercare le singole parole allinterno del testo; in questo caso ad esempio vogliamo che tutte e tre le parole siano presenti nel titolo del libro. In questo modo otterremo un unico risultato e verrano scartati molti libri che invece sono rilevanti.
  • #12: Allo stesso modo possiamo invece volere che almeno una delle tre parole sia presente nel titolo del libro. In questo caso otteniamo molti pi湛 risultati, alcuni dei quali per嘆 risultano essere irrilevanti ai fini della ricerca. Questo perch辿 basta che sia presente la lettera a allinterno di un titolo ed esso verr restituito. Dunque questa 竪 una principale problematica che riguarda le basi di dati relazionali; inoltre c竪 da dire che queste tipologie di query diventeranno sempre pi湛 lente man mano che la dimensione del catalogo dei libri crescer, perche la query deve eseguire la scansione attraverso il titolo di ogni libro per trovare delle corrispondenze parziali invece.
  • #13: L'indice inverso va ad invertire questo modello effettuando lanalisi del testo e mappando ogni parola su tutti i documenti in cui essa appare. Lanalisi del testo pu嘆 essere fatta in diversi modi, utilizzando particolari tokenizzazioni e filtri: ad esempio qui 竪 stata effettuata una whitespace tokenization, cio竪 per ogni spazio bianco viene individuato un termine, e successivamente un filtro per portare I termini tutti in lowercase.
  • #14: Quindi se supponiamo di voler interrogare lindice alla ricerca dei termini new e home, una volta che l'elenco dei documenti corrispondenti ad ogni termini 竪 stato trovato, Lucene eseguir le operazioni di set per arrivare ad un adeguato set di risultati finale che corrisponde alla query. A questo punto 竪 necessario specificare come vogliamo interrogare l'indice: - Ricerca di due differenti termini, new"e home", richiedendo il match di entrambi, attraverso loperatore AND; ed in questo caso otteniamo lintersezione tra I due insiemi. Ricerca di due differenti termini, new"e home", richiedendo il match di un solo termine, attraverso loperatore OR; ed in questo caso otteniamo lunione tra I due insiemi. - Ricerca della frase esatta new home; in questo caso ogni termine della frase viene ancora ricercato nell'indice individualmente, viene eseguita poi loperazione di AND poich竪 entrambi I termini devono essere presenti nella frase, ed infine si fa uso di una caratteristica facoltativa chiamata term position, che ci dice la posizione relativa dei termini all'interno del documento.
  • #15: Grazie allutilizzo dellindice inverso di Lucene, Solr risulta essere altamente performante nelle operazioni di ricerca, e proprio per questo motivo esso 竪 utilizzato in tantissimi siti web di caratura mondiale; come ad esempio Questo per far capire proprio quelle che sono le potenzialit di questo strumento.
  • #16: Una volta studiata a fondo la piattaforma di ricerca, ed abbiamo visto molte delle sue funzionalit e dei suoi punti di forza, si 竪 passati allo sviluppo del componente di ricerca commissionato dallazienda KDM, chiamato Hierarchy Component. Innanzitutto qual竪 lo scopo di questo componente? Esso deve produrre una clusterizzazione gerarchica dei documenti a seguito di una ricerca effettuata dalutente. Cio竪 dati in input un certo numero di documenti indicizzati in Solr e ottenuti da una ricerca effettuata dallutente, e un Thesaurus (che rappresenta un insieme di termini strutturati e collegati semanticamente e della cui gestione, organizzazione e indicizzazione ce ne parler dopo il mio collega), quello che questo componente deve produrre in output, 竪 linsieme dei documenti raggruppati in cluster, ogni cluster rappresenta un certo dominio semantico e in esso saranno presenti tutti I documenti di quel dominio, ed ogni cluster prodotto che venga successivamente gerarchizzato; cio竪 che vengano fatti dei collegamenti tra I vari cluster in modo da creare una gerarchia tra loro. Chi 竪 che ci fornisce questa gerarchia? Il Thesaurus in uso.
  • #17: A questo punto una domanda sorge spontanea. Una piattaforma di ricerca efficace come Solr e piena di funzionalit, non ha questo componente gi sviluppato? Ebbene nel suo pacchetto di funzionalita fornisce la possibilita di raggruppare dei documenti correlati mediante un componente di Clustering (di cui vi ho gi accenato precedentemente); ma per quanto riguarda la clusterizzazione gerarchica non 竪 fornito alcun algoritmo. Per precisare Solr fa uso di una piattaforma open source di nome Carrot la quale implementa 3 diversi algoritmi: abbiamo Lingo e STC che sono gratuiti ma non forniscono hierarchical clustering; poi c竪 il Lingo 3G che fornisce questa funzionalit ma 竪 a pagamento; se si acquista questo algoritmo 竪 possibile integrarlo in Solr, ma ovviamente essendo open source non 竪 presente nel pacchetto base. Dunque utilizzando lalgortimo di clustering di default presente in solr, e cio竪 Lingo, il primo step della creazione dei cluster risulta gi effettuato. Ci嘆 che manca 竪 di andare a effettuare la gerarchizzazione di questi cluster.
  • #18: Vediamo intuitivamente come 竪 stato realizzato ci嘆 attraverso lutilizzo dei thesaurus. Lalgoritmo sviluppato si basa su diversi step: Al primo step si effettua una ricerca sul corpus dei documenti utilizzando il componente di clustering. L'algoritmo di clustering, cio竪 Lingo, fornira in output una lista di cluster che chiamiamo Lc; ogni cluster appartenente a tale lista risulter etichettato mediante una label dall'algoritmo di clustering e conterr un certo numero di documenti (tra quelli restituiti in output dalla ricerca effettuata). Le label rappresentative dei cluster vengono successivamente sottoposte ad un processo di stemming (riduzione della forma flessa di una parola alla sua forma radice). In tale fase inoltre la lista Lt verr generata in maniera ordinata alfabeticamente. Si ricercano i termini presenti nella lista Lt all'interno del thesaurus indicizzato e i termini trovati costituiranno la lista Lo come output della ricerca. Tale lista sar ordinata alfabeticamente. Ovviamente pu嘆 accadere che non tutti i termini vengano trovati all'interno dell'ontologia, e in tal caso la cardinalit di Lo sar minore di quella di Lt. Cosa importante 竪 che il thesaurus 竪 presente su un indice di Solr differente da quello contenente il corpus documentale; questo per mantenere separati i due insiemi di documenti: il primo costituito da documenti che sono oggetto della ricerca e il secondo costituito da documenti che rappresentano il thesaurus in uso. A questo punto si effettua un confronto tra le due liste ordinate Lt ed Lo. Tale confronto permetter dunque di conoscere quali termini sono stati trovati nel thesaurus e quali invece non sono stati trovati. E' fondamentale che le due liste siano ordinate alfabeticamente per fare in modo che la complessit computazionale del confronto sia lineare ( O(n) ). Una volta effettuato il confronto sar possibile associare ad ogni termine della lista risultante, la lista di documenti associati ad ogni cluster. In questo modo si legano i documenti ottenuti dalla ricerca, ai termini presenti nel Thesaurus. Poich辿 ogni termine presente nel Thesaurus ha una propria gerarchia (come ci verr mostrato successivamente), i documenti risulteranno posizionati direttamente in essa. Ovviamente i termini che non sono stati trovati nel thesaurus non apparterranno a nessuna gerarchia, e quindi risulteranno semplicemente raggruppati in cluster ma non gerarchizzati. Attraverso questi step dunque si ottiene la clusterizzazione gerarchia.
  • #19: Adesso vediamo invece come tale algoritmo 竪 stato sviluppato in Solr. Solr offre un semplice meccanismo di implementazione di nuovi componenti, chiamati Search Component. Il compito di un Search Component 竪 quello di aggiungere informazione alla risposta di Solr quando si effettua una ricerca: nel nostro caso l'informazione aggiunta riguarda proprio la clusterizzazione gerarchica. Per creare un nuovo search component bisogna prima di tutto informare Solr del nuovo componente andandolo ad aggiungere al file di configurazione solrconfig.xml. Successivamente bisogna creare un nuovo request handler che si occuper di richiamare il nostro componente. Cio竪 quando facciamo una richiesta a Solr e vogliamo che venga utilizzato il nostro componente, allora tale richiesta bisogna farla ad un determinato request handler: il quale 竪 stato chiamato search, ed 竪 raggiungibile mediante richiesta http. Infine bisogna scrivere il comportamento di questo componente, cio竪 tutti I passi dellalgortimo che abbiamo visto precedentemente, e ci嘆 竪 stato fatto creando una classe Java la quale al suo interno fa uso delle librerie di Solr ed anche delle API SolrJ per effettuare richieste da client a Solr; ad esempio poich竪 dobbiamo interrogare lindice in cui 竪 presente il Thesaurus.
  • #20: Una volta che il componente 竪 stato sviluppato, si 竪 andati ad integrarlo allinterno di una semplice interfaccia utente di ricerca fornita da Solr, che 竪 chiamata Velocity o anche Soliritas; essa manifesta diverse utili caratteristiche come la ricerca, il faceting, l'autocompletamento, highlighting e la ricerca spaziale. Se attivo, 竪 possibile visualizzare anche il clustering in azione.
  • #21: Dunque si 竪 andati ad inserire il nostro componente di ricerca Hierarchy allinterno di questa interfaccia utente per rendere navigabile lalbero dei risultati restituito dal componente stesso. Nellesempio mostrato 竪 stata eseguita una ricerca libera su Solr, cio竪 senza parametri, ed 竪 possibile notare che delle 11 etichette mostrate nella sezione Hierarchy, 10 sono relative a label di cluster che hanno trovato una corrispondenza nel Thesaurus, mentre l'etichetta Non Match contiene tutte le label che non sono state trovate. Per navigare lalbero basta dunque cliccare su una qualsiasi delle etichette, se ad esempio cliccliamo su scienze sociali
  • #22: vedremo solamente il suo contenuto. In questo caso 竪 presente una ulteriore etichetta scienze economiche. Cliccando su questa nuova etichetta scendiamo ancora di livello.
  • #23: In questo esempio sotto scienze economiche sono presenti direttamente I documenti. Questo vuol dire che scienze economiche 竪 la label di un cluster generato da Lingo, e che 竪 stata trovata allinterno del Thesaurus. Tale termine nel thesaurus risulta figlio del termine scienze sociali. E da qui nasce appunto la gerarchizzazione dei cluster.
  • #24: Olte a garantire il corretto funzionamento del componente, un altro aspetto importante riguarda il tempo di esecuzione poich竪 quando si parla di ricerca I tempi di risposta del sistema sono fondamentali affinch竪 lutente risulti soddisfatto. Sono stati eseguiti dunque dei test sul componente effettuando una serie di query. In questo primo grafico abbiamo sullasse delle X il numero di documenti restituiti dalla query; ed 竪 dunque facile notare come allaumentare dei documenti il numero di cluster prodotti sale, e a sua volta aumenta anche il numero di cluster trovati allinterno del Thesaurus (il test 竪 stato fatto con un Thesaurus fisso). E questo conferma era ci嘆 che ci si attendeva e in un certo senso conferma il corretto funzionamento.
  • #25: Ma quello che ci interessa maggiormente 竪 il tempo di esecuzione di queste query di ricerca. Osserviamo che allaumentare dei documenti, e dunque dei cluster prodotti, il tempo di esecuzione sale. La cosa importante 竪 che questa crescita sia lineare. E osservando dalla figura.
  • #26: In conclusione, 竪 stato fatto uno studio approfondito della piattaforma di ricerca Apache Solr e si sono messe in mostra quelle che sono le sue principali caratteristiche, abbiamo visto come 竪 stato realizzato il componente di clusterizzazione gerarchica in Solr commissionato dallazienda KDM; ed infine abbiamo visto come il vincolo di linearit di tale componente sia stato rispettato. In futuro sono gi stati programati alcuni step per affinare il comportamento di Hierarchy Component: considerando non sono relazioni gerarchiche padre figlio tra gli elementi di un Thesaurus ma anche relazioni trasversali che trasformeranno la struttura da albero a grafo; ed infine includendo anche relazioni di sinonimia tra diversi termini in maniera tale che il componente automaticamente raggruppi risultati che fanno parte di cluster sinonimi tra loro.