Un'introduzione ai motori di ricerca nativi di TYPO3 e presentazione dei loro limiti. Presentazione di Apache Solr e delle modalit di integrazione in TYPO3
Solr search engine with multiple table relationJay Bharat
油
Here you can learn how to use solr search engine and implement in your application like in PHP/MYSQL.
I am introducing how to handle multiple table data handling in SOLR.
Presented by Martijn van Groningen, SearchWorkings - See conference video - http://www.lucidimagination.com/devzone/events/conferences/lucene-revolution-2012
In the real world data isnt flat. Data is often modelled into complex models. Lucene is document oriented and doesnt support relations natively. The only way you could index this data is by de-normalizing the relations in a document with many fields and execute subsequent queries. Subsequent queries can be expensive and data gets duplicated. This isnt always ideal. Recently Solr and Lucene provide features that allow you to join and group. You can join and group on fields across documents and still have the power of Lucenes awesome free text search. In this presentation, well look at these new alternatives, the advantages and disadvantages and how these features can be utilized. how these new capabilities impact the design of Solr-based search applications primarily from infrastructure and operational perspectives.
Funziona! allora non toccarlo, ovvero l'analisi d'infrastruttura in esercizio.Giuliano Latini
油
Il "non stuzzicare il can che dorme" 竪 un approccio classico nell'ambiente delle operation e nasce dall'essere focalizzati sulla garanzia dei servizi erogati. Purtroppo gli avvicendamenti: del personale, delle aziende e dei progetti impongono la necessit di analizzare l'infrastruttura in esercizio. I provider di Public Cloud come Microsoft Azure forniscono maggiori strumenti, rispetto quelli disponibili nelle architetture on-premises, per lo studio dell'infrastruttura mantenendo l'erogazione dei servizi. Durante la sessione, con alcune demo di esempio, verranno illustrare le tecniche e gli strumenti disponibili in Microsoft Azure per raggiungere questo obiettivo.
CDays15 - AZ08 - DocumentDB: il NoSql secondo AzureDavide Benvegn湛
油
DocumentDB 竪 il nuovo database documentale NoSQL disponibile su Microsoft Azure, particolarmente adatto agli scenari in cui 竪 richiesta una grande scalabilit ed alte prestazioni nell'accesso ai dati.
In questa sessione analizzeremo le sue caratteristiche, capiremo come si usa e come poter sviluppare applicazioni reali che lo utilizzano.
Il caso CNR: la soluzione di Gestione Concorsi con AlfrescoAlfresco Software
油
Alfresco, la piattaforma ECM e BPM open source leader di mercato, presenta un case study di successo basato sullesperienza del Consiglio Nazionale delle Ricerche.
Scopri come il CNR ha sfruttato le potenzialit di Alfresco per realizzare unapplicazione di Gestione Concorsi, un sistema di presentazione delle candidature online per il reclutamento del personale dipendente e degli altri rapporti di lavoro e formazione dellente.
Intelligent Question Answering System nell'ambito del progetto di ricerca PIU...Monica Daniele
油
Presentazione della tesi di laurea in Informatica presso l'Universit degli Studi di Napoli Federico II.
La tesi 竪 il risultato dell'attivit di tirocinio svolta presso l'azienda Neatec S.p.a. che 竪 consistita nell'analisi, la progettazione e lo sviluppo di un Intelligent Question Answering System nell'ambito del progetto di ricerca PIUCultura (Paradigmi Innovativi per l'Utilizzo della Cultura). Il software PIUCultura sar realizzato per garantire a chiunque visiti un sito culturale un'esperienza unica e partecipativa, realizzando, tra le varie funzionalit, l'interazione tra l'utente e il sistema in linguaggio naturale. E' stato proposto un approccio innovativo per la classificazione delle domande basato sulla modellazione sintattica attraverso il formalismo logico Answer Set Programming.
Andrea Angiolini + Prof. Fabio Vitali (Casa editrice Il Mulino)
Da quasi 10 anni il Mulino ha strutturato il proprio processo di produzione, formalizzando workflow di metadati e file e definendo ruoli per gli attori della catena editoriale.
Lo scopo principale era e resta conservare la produzione dei libri, rendendola riutilizzabile perch辿 basata su standard. Questo ci ha permesso tra l'altro di realizzare successivamente nuovi contenuti e servizi per la ricerca e lo studio, nei quali le interfacce duso sono centrali.
Andrea Angiolini 竪 direttore editoriale del Mulino, dove ricopre anche la carica di responsabile del settore digitale. Allinterno dellAssociazione italiana editori, 竪 membro del gruppo
accademico-professionale e presidente della commissione digitale.
Social media link:
https://www.linkedin.com/pub/andrea-angiolini/2/21a/358
https://it.linkedin.com/pub/fabio-vitali/0/b28/9b5
Sito professionale:
https://www.mulino.it/
https://www.unibo.it/sitoweb/fabio.vitali
Android Frameworks for Geolocalized Apps Development: Diane, Hermes, Polaris/...Massimiliano Leone
油
A short presentation for my bachelor thesis, about 5 frameworks for development of geolocalized Android apps:
- Diane: for an awareness searching
- Hermes: a different mvc in android
- Polaris/Kusor: a better solution for location retrieving
- Socrates: a Google Places Api library, in pure Java
- Ulysses: a specific use of Diane, for aware search of places from Google Places - that is: the summa of Diane and Socrates.
Code available on github:
https://github.com/k0smik0/diane
https://github.com/k0smik0/hermes
https://github.com/k0smik0/polaris
https://github.com/k0smik0/kusor
https://github.com/k0smik0/socrates
https://github.com/k0smik0/ulysses
OVERVIEW: Java secondo Microsoft
STRUMENTI:Java nel cloud
MODALITA: Il Development life cycle secondo Microsoft
APPROCCIO: Stack cloud native basato su JAVA ed Azure
CAMBIAMENTO: Know how necessario per lo sviluppo su AZURE con Java
OPPORTUNITA: Use case di implementazione 束first approach損
Il progetto INNO: dal dato alla applicazione - Pierluigi Cau (CRS4)Sardegna Ricerche
油
La presentazione del progetto INNO da parte del responsabile scientifico Pierluigi Cau (CRS4). Il progetto si propone di sviluppare uno strumento altamente innovativo orientato ai servizi per la geomatica sul web e al mondo delle applicazioni mobile.
Code Contracts and Generics: implementing a LINQ-enabled RepositoryAndrea Saltarello
油
In questa sessione vedremo come implementare il Repository pattern in modo da creare un Data Access Layer interrogabile mediante query LINQ, delegando l'effettiva esecuzione delle stesse ad O/RM quali Entity Framework e/o NHibernate.
Il nuovo catalogo della rete URBS - La migrazione akohaAndrea Marchitelli
油
Le slide presentano le attivit Cineca per il nuovo catalogo della rete URBS, realizzato con Koha, e una riflessione sull'uso degli applicativi open source.
Funziona! allora non toccarlo, ovvero l'analisi d'infrastruttura in esercizio.Giuliano Latini
油
Il "non stuzzicare il can che dorme" 竪 un approccio classico nell'ambiente delle operation e nasce dall'essere focalizzati sulla garanzia dei servizi erogati. Purtroppo gli avvicendamenti: del personale, delle aziende e dei progetti impongono la necessit di analizzare l'infrastruttura in esercizio. I provider di Public Cloud come Microsoft Azure forniscono maggiori strumenti, rispetto quelli disponibili nelle architetture on-premises, per lo studio dell'infrastruttura mantenendo l'erogazione dei servizi. Durante la sessione, con alcune demo di esempio, verranno illustrare le tecniche e gli strumenti disponibili in Microsoft Azure per raggiungere questo obiettivo.
CDays15 - AZ08 - DocumentDB: il NoSql secondo AzureDavide Benvegn湛
油
DocumentDB 竪 il nuovo database documentale NoSQL disponibile su Microsoft Azure, particolarmente adatto agli scenari in cui 竪 richiesta una grande scalabilit ed alte prestazioni nell'accesso ai dati.
In questa sessione analizzeremo le sue caratteristiche, capiremo come si usa e come poter sviluppare applicazioni reali che lo utilizzano.
Il caso CNR: la soluzione di Gestione Concorsi con AlfrescoAlfresco Software
油
Alfresco, la piattaforma ECM e BPM open source leader di mercato, presenta un case study di successo basato sullesperienza del Consiglio Nazionale delle Ricerche.
Scopri come il CNR ha sfruttato le potenzialit di Alfresco per realizzare unapplicazione di Gestione Concorsi, un sistema di presentazione delle candidature online per il reclutamento del personale dipendente e degli altri rapporti di lavoro e formazione dellente.
Intelligent Question Answering System nell'ambito del progetto di ricerca PIU...Monica Daniele
油
Presentazione della tesi di laurea in Informatica presso l'Universit degli Studi di Napoli Federico II.
La tesi 竪 il risultato dell'attivit di tirocinio svolta presso l'azienda Neatec S.p.a. che 竪 consistita nell'analisi, la progettazione e lo sviluppo di un Intelligent Question Answering System nell'ambito del progetto di ricerca PIUCultura (Paradigmi Innovativi per l'Utilizzo della Cultura). Il software PIUCultura sar realizzato per garantire a chiunque visiti un sito culturale un'esperienza unica e partecipativa, realizzando, tra le varie funzionalit, l'interazione tra l'utente e il sistema in linguaggio naturale. E' stato proposto un approccio innovativo per la classificazione delle domande basato sulla modellazione sintattica attraverso il formalismo logico Answer Set Programming.
Andrea Angiolini + Prof. Fabio Vitali (Casa editrice Il Mulino)
Da quasi 10 anni il Mulino ha strutturato il proprio processo di produzione, formalizzando workflow di metadati e file e definendo ruoli per gli attori della catena editoriale.
Lo scopo principale era e resta conservare la produzione dei libri, rendendola riutilizzabile perch辿 basata su standard. Questo ci ha permesso tra l'altro di realizzare successivamente nuovi contenuti e servizi per la ricerca e lo studio, nei quali le interfacce duso sono centrali.
Andrea Angiolini 竪 direttore editoriale del Mulino, dove ricopre anche la carica di responsabile del settore digitale. Allinterno dellAssociazione italiana editori, 竪 membro del gruppo
accademico-professionale e presidente della commissione digitale.
Social media link:
https://www.linkedin.com/pub/andrea-angiolini/2/21a/358
https://it.linkedin.com/pub/fabio-vitali/0/b28/9b5
Sito professionale:
https://www.mulino.it/
https://www.unibo.it/sitoweb/fabio.vitali
Android Frameworks for Geolocalized Apps Development: Diane, Hermes, Polaris/...Massimiliano Leone
油
A short presentation for my bachelor thesis, about 5 frameworks for development of geolocalized Android apps:
- Diane: for an awareness searching
- Hermes: a different mvc in android
- Polaris/Kusor: a better solution for location retrieving
- Socrates: a Google Places Api library, in pure Java
- Ulysses: a specific use of Diane, for aware search of places from Google Places - that is: the summa of Diane and Socrates.
Code available on github:
https://github.com/k0smik0/diane
https://github.com/k0smik0/hermes
https://github.com/k0smik0/polaris
https://github.com/k0smik0/kusor
https://github.com/k0smik0/socrates
https://github.com/k0smik0/ulysses
OVERVIEW: Java secondo Microsoft
STRUMENTI:Java nel cloud
MODALITA: Il Development life cycle secondo Microsoft
APPROCCIO: Stack cloud native basato su JAVA ed Azure
CAMBIAMENTO: Know how necessario per lo sviluppo su AZURE con Java
OPPORTUNITA: Use case di implementazione 束first approach損
Il progetto INNO: dal dato alla applicazione - Pierluigi Cau (CRS4)Sardegna Ricerche
油
La presentazione del progetto INNO da parte del responsabile scientifico Pierluigi Cau (CRS4). Il progetto si propone di sviluppare uno strumento altamente innovativo orientato ai servizi per la geomatica sul web e al mondo delle applicazioni mobile.
Code Contracts and Generics: implementing a LINQ-enabled RepositoryAndrea Saltarello
油
In questa sessione vedremo come implementare il Repository pattern in modo da creare un Data Access Layer interrogabile mediante query LINQ, delegando l'effettiva esecuzione delle stesse ad O/RM quali Entity Framework e/o NHibernate.
Il nuovo catalogo della rete URBS - La migrazione akohaAndrea Marchitelli
油
Le slide presentano le attivit Cineca per il nuovo catalogo della rete URBS, realizzato con Koha, e una riflessione sull'uso degli applicativi open source.
Il nuovo catalogo della rete URBS - La migrazione akohaAndrea Marchitelli
油
Tesi4
1. 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
2. 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
3. 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
4. Indice
Apache Solr
Architettura di Solr
Principali funzionalit
Inverted index
Hierarchy Component
Algoritmo
Sviluppo in Solr
Test
4
5. 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
8. Panoramica delle funzionalit (2)
Result grouping
Flexing query support
Importing rich document (Word, Pdf)
Database integration
Multilingual support
8
15. Hierarchy Component
Clusterizzazione gerarchica dei documenti
Input:
N documenti
Thesaurus
Output:
I documenti (N) raggruppati in cluster
Cluster collegati semanticamente
Vincolo di linearit
15
18. 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
25. 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
#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.