Drupal + Apache SOLR

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

[email protected]

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