If you can't read please download the document
Upload
claudio-cicali
View
3.219
Download
0
Embed Size (px)
Citation preview
Apache SOLR + Drupal
Claudio Cicali
Claudio Cicali
(vedi ultima slide)
Drupal + Apache SOLR Claudio Cicali
Un paio d'anni fa, un nostro cliente...
Drupal + Apache SOLR Claudio Cicali
Documentale con circa 100.000 documenti iniziali, con ipotesi di
arrivare fino al milione.
Necessit di ri-pubblicazione su siti remoti, Drupal o
no
Sistema di ricerca sofisticato e ovviamente - veloce
Il progetto
Drupal + Apache SOLR Claudio Cicali
Nasceva Mittwoch
Drupal + Apache SOLR Claudio Cicali
OK, e la ricerca?
Il sistema di ricerca fulltext core di Drupal stato abbandonato (quasi) subitoIn realt ci abbiamo anche provato, ma...
Indicizzazione lenta e non scalabile in maniera lineare
Tabelle di servizio alla ricerca nello stesso DB dei documenti
Indicizzazione contenuti in puro PHP
Impatta direttamente (e in maniera poco predicibile) le prestazioni del cronjob
Non delegabile su altri server
Interfaccia utente non eccezionale per la ricerca avanzata
Modulo esterno per la ricerca a faccette (poco scalabile esso stesso)
Drupal + Apache SOLR Claudio Cicali
Here comes...
Solr is the popular, blazing fast open source enterprise search platform from the Apache Lucene project (da http://lucene.apache.org/solr/intro)
(a onor del vero sono stati condotti anche altri esperimenti...)
Drupal + Apache SOLR Claudio Cicali
Troppo potenza!
Per quello che fa e per come lo fa, non semplicissimo da domareN troppo facile capire cosa possa fare per meN facile capire quale sia il modo migliore di fare una certa cosa
Se queste parole vi fanno venire in mente Drupal ho ottenuto il risultato sperato ;)
Questo sicuramente il punto pi arduo da superare; per tutto il resto c' il manuale
Drupal + Apache SOLR Claudio Cicali
In breve...
SOLR un sistema (server) al quale tu dai un set di documenti e successivamente richiedi quelli che soddisfano certe condizioni/parametri
Dunque esiste:
un modo per DARE informazioni
un modo per RICHIEDERE informazioni
un modo per definire una struttura sulla quale imporre delle condizioni
Drupal + Apache SOLR Claudio Cicali
Product Highlights
Vale la pena cercare di capire come funziona?
SOLR (Lucene) allo stato dell'arte della ricerca fulltext, sia come funzionalit che come query syntax (con dei limiti...)
Ottime prestazioni (caching out-of-the-box)
Scalabile all'infinito perch viene gestita la replicazione degli indici
Si appoggia su tecnologie robuste e enterprise grade da anni (Lucene, Tomcat, Java)
Supporto alla faceted search (ricerca a faccette)
continua...
Drupal + Apache SOLR Claudio Cicali
Product Highlights
Vale la pena cercare di capire come funziona?
Gestione stemming (did you mean...?), sinonimi, more like this
Estensibile (vuoi che la risposta alle ricerche sia in CSV?)
Agnostico sul tipo di documento (nodi Drupal o un catalogo di parti meccaniche). La ricerca sui campi, non su dei blob
Query time field & document boosting (no reindex)
Highlight e snippet
Gli indici contengono i dati serializzati (query del tipo: cerca FORD nel TITLE e ritornami BODY, DATE e AUTHOR)
Drupal + Apache SOLR Claudio Cicali
Consigliato!
In pratica permette di rispondere sempre S alle richieste che riguardano un sistema di ricerca. Se (gran) parte del valore della nostra applicazione o della nostra azienda sta nel sistema di ricerca, credo sia praticamente obbligatorio capire in cosa SOLR possa aiutarci.
Se poi l'interfaccia con Drupal gi pronta, tanto meglio ;)
Drupal + Apache SOLR Claudio Cicali
Zooming In...
Apache SOLR Server
La nostra applicazione
Drupal + Apache SOLR Claudio Cicali
Zooming in...
Apache SOLR Server
La nostra applicazione
DB
INDEXHTTPPOST/GET
Drupal + Apache SOLR Claudio Cicali
Zooming in...
SOLR ServerLa nostra applicazione
DB
INDEXHTTPPOST/GET
schema.xmlsolrconfig.xmlDARE eRICHIEDERE
STRUTTURA
Drupal + Apache SOLR Claudio Cicali
La struttura dei dati
Ogni documento che viene spedito a SOLR non un blob informe di dati ma invece composto da CAMPI, tanti quanti se ne ritengano necessari. Questi campi vengono definiti in fase di progettazione del nostro indice.
ben presente il concetto di tipo di dato (ed possibile addirittura definirne di nuovi)
Drupal + Apache SOLR Claudio Cicali
La struttura dei dati
SOLR necessita di una definizione esplicita della struttura dei documenti che gli diamo in pasto.Questa struttura viene definita tramite il file SCHEMA.XML
...
...
...idbody...
La struttura dei dati
I campi sono analizzati/filtrati sia in ingresso (index time) che in uscita (query time)
[...] [...]
Drupal + Apache SOLR Claudio Cicali
Drupal + Apache SOLR Claudio Cicali
Tutto molto bello, ma...
Sebbene la definizione dello SCHEMA.XML rappresenti la parte pi complessa e caratteristica della configurazione di un server SOLR, questo lavoro per quanto riguarda l'integrazione con Drupal gi fatto.
Il modulo che integra Drupal con SOLR, infatti, provvede anche uno SCHEMA.XML pronto all'uso (e anche un solrconfig.xml).
Drupal + Apache SOLR Claudio Cicali
Mettiamolo in moto...
Versione corrente, SOLR 1.4, 10 novembre 2009
SOLR una web application Java e per funzionare ha dunque bisogno di
un servlet container
Appena scaricato SOLR comunque pronto all'uso: insieme a lui viene distribuito Jetty
Per provarlo non dunque necessario essere degli esperti J2EE
In produzione caldamente consigliato l'utilizzo di Tomcat
Drupal + Apache SOLR Claudio Cicali
Una volta partito SOLR attiva due listener HTTP. Uno per le richieste applicative (ricerca e aggiornamento indici) e uno che fornisce una (orribile) interfaccia di amministrazione
Drupal + Apache SOLR Claudio Cicali
Interfaccia di ispezione
Drupal + Apache SOLR Claudio Cicali
Interfaccia di ispezione
SOLR full interface
Risposta XML
Drupal + Apache SOLR Claudio Cicali
Drupal + Apache SOLR Claudio Cicali
Sommario dei componenti
Drupal + Apache SOLR Claudio Cicali
Ricapitolando
Cosa occorre fare, in concreto, per usare un sistema SOLR powered?
Studiare la documentazione (o il libro)
Creare un SCHEMA.XML che mappi la struttura dei nostri
documenti
Interfacciare SOLR alla nostra applicazione
Dare in pasto a SOLR tutti i nostri documenti
preesistenti
Tuning
Drupal + Apache SOLR Claudio Cicali
Chi ben comincia...
Per Drupal il pi gi stato fatto!
Studiare la documentazione (o il libro)
Creare un SCHEMA.XML che mappi la struttura dei nostri
documenti
Interfacciare SOLR alla nostra applicazione
Dare in pasto a SOLR tutti i nostri documenti
preesistenti
Tuning
Drupal + Apache SOLR Claudio Cicali
apachesolr.module
Una leeeeeeeeeeeeeeeenta gestazione... e ancora siamo alla RC3
Robert Douglass et al.
Drupal + Apache SOLR Claudio Cicali
apachesolr.module
Si installa come un normale modulo, ma in pi:si devono copiare i file SCHEMA.XML e SOLRCONFIG.XML nel posto giusto
Libreria standard PHP per il protocollo applicativo verso SOLR:
SolrPhpClient, http://code.google.com/p/solr-php-client/
Alcune modifiche allo SCHEMA.XML necessitano la reindicizzazione di tutti i documenti.
(eventualmente, aggiungere il file per le stopword italiane)
Finch il modulo non passato in versione RC questo successo diverse volte :(
Drupal + Apache SOLR Claudio Cicali
Integrazione, in due parole
Tabella di sincronizzazione, apachesolr_search_node
Comunicazione verso SOLR:INSERT asincrono (delegato al cron)DELETE e UPDATE sincrono (in tempo reale, via nodeapi)
Esposizione di hook per la modifica dei contenuti;es: apachesolr_node_exclude
Drupal + Apache SOLR Claudio Cicali
DEMO
Drupal + Apache SOLR Claudio Cicali
search.module
Disabilitare il cron per la ricerca core
Drupal + Apache SOLR Claudio Cicali
Titolo
Drupal + Apache SOLR Claudio Cicali
Stato dell'indicizzazione
Drupal + Apache SOLR Claudio Cicali
Faceted search
Drupal + Apache SOLR Claudio Cicali
Document boosting, AKA bias
Drupal + Apache SOLR Claudio Cicali
Drupal + Apache SOLR Claudio Cicali
Field boosting
Drupal + Apache SOLR Claudio Cicali
Inoltre...
Dalla distribuzione standard del modulo si ha gil'integrazione con OG, NODEACCESS, IMAGE
Drupal + Apache SOLR Claudio Cicali
apachesolr_attachment.module
Ricerca nei file allegati
Usa un altro progetto Apache: TIKA http://lucene.apache.org/tika/
Apache Tika is a toolkit for detecting and extracting metadata and structured text content from various documents using existing parser libraries
Drupal + Apache SOLR Claudio Cicali
Una delle novit di Views 3, che per una view permette di scegliere il backend che fornisce i dati alla stessa. L'integrazione con apachesolr permette di scegliere SOLR come backend diretto.
Apache SOLR
+
Views 3
Drupal + Apache SOLR Claudio Cicali
Puntatori
Modulo Drupal: http://drupal.org/project/apachesolrSOLR: http://lucene.apache.org/solrTIKA: http://lucene.apache.org/tikaNUTCH: http://lucene.apache.org/nutch/Presentazione Video di R. Douglass http://bit.ly/cc-robsolrArticolo IBM su SOLR, parte 1: http://bit.ly/cc-ibmsolr1Articolo IBM su SOLR, parte 2: http://bit.ly/cc-ibmsolr2Solr + VIEWS3: http://bit.ly/cc-solrviews3
http://bit.ly/cc-solrbook
Altra presentazione online recente: http://bit.ly/cc-solrsiegfried
Velocit pura? SPHINXSEARCH http://sphinxsearch.com/
Drupal + Apache SOLR Claudio Cicali
Riferimenti
Claudio Cicali
http://claudio.cicali.name
http://bit.ly/cicali
http://www.renomo.com
Drupal + Apache SOLR Claudio Cicali
Licenza
Creative Commons License Attribution-NonCommercial-ShareAlike 2.5
http://creativecommons.org/licenses/by-nc-sa/2.5/
Copyright Claudio Cicali 2009
Click to edit the title text format
Click to edit the title text format
Click to edit the outline text formatSecond Outline LevelThird Outline Level
11 dicembre 2009 DrupalCamp Crema