14. 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...)
15. Drupal + Apache SOLR – Claudio Cicali Troppo potenza! Per quello che fa e per come lo fa, non è semplicissimo da domare Né è troppo facile capire cosa possa fare per me Né è 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
29. Gli indici contengono i dati serializzati (query del tipo: “cerca FORD nel TITLE e ritornami BODY, DATE e AUTHOR”)
30. 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 ;)
31. Drupal + Apache SOLR – Claudio Cicali Zooming In... Apache SOLR Server La nostra applicazione
32. Drupal + Apache SOLR – Claudio Cicali Zooming in... Apache SOLR Server HTTP POST/GET La nostra applicazione DB INDEX
33. Drupal + Apache SOLR – Claudio Cicali Zooming in... HTTP POST/GET DARE e RICHIEDERE STRUTTURA SOLR Server La nostra applicazione DB INDEX schema.xml solrconfig.xml
34. 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)
35. 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 ... < fieldType name="integer" class="solr.IntField"/> <fieldType name="long" class="solr.LongField"/> <fieldType name="float" class="solr.FloatField"/> ... < field name="id" type="string" indexed ="true" stored ="true" required ="true" /> <field name="body" type="text" indexed="true" stored="true"/> <field name="teaser" type="text" indexed="false" stored="true"/> <field name="type" type="string" indexed="true" stored="true"/> <field name="type_name" type="string" indexed="true" stored="true"/> <field name="path" type="string" indexed="true" stored="true"/> ... <uniqueKey>id</uniqueKey> <defaultSearchField>body</defaultSearchField> ...
36. La struttura dei dati I campi sono analizzati/filtrati sia in ingresso (index time) che in uscita (query time) [...] <fieldType name="text" class="solr.TextField"> <analyzer type="index"> <charFilter class="solr.MappingCharFilterFactory" mapping="mapping-ISOLatin1Accent.txt"/> <tokenizer class="solr.WhitespaceTokenizerFactory"/> <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/> <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" /> <filter class="solr.LowerCaseFilterFactory"/> <filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt"/> <filter class="solr.RemoveDuplicatesTokenFilterFactory"/> </analyzer> <analyzer type="query"> <charFilter class="solr.MappingCharFilterFactory" mapping="mapping-ISOLatin1Accent.txt"/> <tokenizer class="solr.WhitespaceTokenizerFactory"/> <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/> <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" /> <filter class="solr.LowerCaseFilterFactory"/> <filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt"/> <filter class="solr.RemoveDuplicatesTokenFilterFactory"/> </analyzer> </fieldType> [...] Drupal + Apache SOLR – Claudio Cicali
37. 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).
38. 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
39. 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
54. Drupal + Apache SOLR – Claudio Cicali apachesolr.module Una leeeeeeeeeeeeeeeenta gestazione... e ancora siamo alla RC3 Robert Douglass et al.
55.
56. 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 :(
57. 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
66. Drupal + Apache SOLR – Claudio Cicali Inoltre... Dalla distribuzione standard del modulo si ha già l'integrazione con OG , NODEACCESS , IMAGE
67. 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»
68. 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
69. Drupal + Apache SOLR – Claudio Cicali Puntatori Modulo Drupal : http://drupal.org/project/ apachesolr SOLR : http://lucene.apache.org/ solr TIKA : http://lucene.apache.org/ tika NUTCH : http://lucene.apache.org/nutch/ Presentazione Video di R. Douglass http://bit.ly/cc-robsolr Articolo IBM su SOLR, parte 1: http://bit.ly/cc-ibmsolr1 Articolo IBM su SOLR, parte 2: http://bit.ly/cc-ibmsolr2 Solr + 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/