Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Milano 14/15 Marzo 2014
Ricerche evolute
mediante Apache Solr
Mauro Lorenzutti
T3Camp Italia
Il quarto evento italiano ded...
Mauro Lorenzutti
CTO di Webformat
Sviluppatore e consulente TYPO3 dal 2004
TYPO3 Certified Integrator dal 2009
Sviluppator...
Di cosa parleremo
La ricerca integrata di TYPO3
Indexed Search Engine
Introduzione ad Apache Solr
Integrare Solr in TYPO3
...
50 slide…
Tutti pronti?
Pag. 4Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
Io si!
La ricerca nei siti
Molto spesso trascurata e sottovalutata
Ma…
Se ho un database con >100k eventi?
Se ho un catalogo con ...
La ricerca standard di TYPO3
Pag. 7Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
Un contenuto standard
Pag. 8Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
Le funzionalità della ricerca standard
Consente all’utente di scegliere se cercare nelle keyword
della pagina o nel conten...
Pro & Contro della ricerca standard
Pag. 12Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
+ Integrata
+ Facile da...
Indexed Search Engine
Pag. 13Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
Un’estensione di sistema
Pag. 14Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
Indice
Pag. 16Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
Statistiche
Pag. 17Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
Le funzionalità della ricerca standard
Consente di indicizzare pagine, record nel database,
documenti, immagini, url ester...
Pro & Contro di Indexed search engine
Pag. 21Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
+ Integrata
+ Indiciz...
Pag. 22Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
Apache Solr?
• SolrTM is the popular, blazing fast open source enterprise
search platform from the Apache LuceneTM project...
Download
Download:
http://www.apache.org/dyn/closer.cgi/lucene/solr/4.7.0
Apache License, versione 2.0
http://www.apache.o...
Ma cos’è Apache Solr?
Solr è un “enterprise search server”
Espone delle API REST per l’interazione
Vi si possono caricare ...
Funzionalità principali
Ricerche Full-text
Faceted navigation
Spellchecking: “Did you mean…”
Raccomandazioni: “More like t...
Schemaless
Permette di definire dinamicamente i campi che descrivono
il documento
Pag. 27Mauro Lorenzutti: Ricerche evolut...
Interfaccia di amministrazione
Pag. 28Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
Come integrarlo in TYPO3?
Due possibilità:
Apache Solr for TYPO3 (ext: solr)
DIY (ext: arrangiati)
Pag. 29Mauro Lorenzutti...
Apache Solr for TYPO3
Pag. 30Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
DIY
Sono disponibili diversi client PHP, ad es.:
http://www.solarium-project.org/
https://code.google.com/p/solr-php-clien...
DIY
Costruiamo un esempio
molto semplice
Indicizziamo le news del
nostro sito
Implementiamo una
funzionalità di ricerca
Co...
Configuriamo il core
core.properties
name=news
config=solrconfig.xml
schema=schema.xml
loadOnStartup=true
Pag. 33Mauro Lor...
solrconfig.xml
[…]
<requestHandler name="/newsImporter"
class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst...
newsImporter.xml
<dataConfig>
<dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost...
schema.xml 1/3
<schema name="typo3_news" version="1.1">
<types>
<fieldtype name="string" class="solr.StrField" />
<fieldTy...
schema.xml 2/3
<fields>
<field name="uid" type="long" indexed="true" stored="true" multiValued="false"
required="true" />
...
schema.xml 3/3
<field name="_version_" type="long" indexed="true" stored="true" multiValued="false" />
<field name="fullTe...
DataImport
Pag. 39Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
Interroghiamo
l’indice
http://localhost:8983/
solr/news/select?
q=fullText:celebr*
&wt=json
&indent=true
&facet=true
&face...
Facciamolo da TYPO3
Pag. 41Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
Setup.txt
Pag. 42Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
NewsSolrController.php
Pag. 43Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
SolrService.php 1/2
Pag. 44Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
SolrService.php 2/2
Pag. 45Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
Search.html
Pag. 46Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
Un dettaglio:
Pag. 47Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
Pro & Contro di Apache Solr
Pag. 48Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
+ Tante tante tante tante funzi...
Alcuni libri utili
Pag. 49Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
Q & A
mauro.lorenzutti@webformat.com
http://it.linkedin.com/in/maurolorenzutti
https://twitter.com/MauroLorenzutti
http://...
Integrare Apache Solr in TYPO3
Integrare Apache Solr in TYPO3
Integrare Apache Solr in TYPO3
Integrare Apache Solr in TYPO3
Integrare Apache Solr in TYPO3
Upcoming SlideShare
Loading in …5
×

Integrare Apache Solr in TYPO3

919 views

Published on

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

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Integrare Apache Solr in TYPO3

  1. 1. Milano 14/15 Marzo 2014 Ricerche evolute mediante Apache Solr Mauro Lorenzutti T3Camp Italia Il quarto evento italiano dedicato a TYPO3
  2. 2. Mauro Lorenzutti CTO di Webformat Sviluppatore e consulente TYPO3 dal 2004 TYPO3 Certified Integrator dal 2009 Sviluppatore di numerose estensioni, tra cui:  DB Integration (wfqbe)  Webformat Shop System (extendedshop)  TYPO3-Alfresco Connector  TYPO3-Magento Connector Speaker in varie conferenze: T3DD07 T3CON07 T3CON09US Pag. 2Mauro Lorenzutti: Ricerche evolute mediante Apache Solr T3CON13DE MageDay 4 x T3CampItalia ;-)
  3. 3. Di cosa parleremo La ricerca integrata di TYPO3 Indexed Search Engine Introduzione ad Apache Solr Integrare Solr in TYPO3 Pag. 3Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
  4. 4. 50 slide… Tutti pronti? Pag. 4Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
  5. 5. Io si!
  6. 6. La ricerca nei siti Molto spesso trascurata e sottovalutata Ma… Se ho un database con >100k eventi? Se ho un catalogo con 20k prodotti strutturato in categorie e con caratteristiche sulla base delle quali vorrei che gli utenti potessero filtrare i prodotti? … Pag. 6Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
  7. 7. La ricerca standard di TYPO3 Pag. 7Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
  8. 8. Un contenuto standard Pag. 8Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
  9. 9. Le funzionalità della ricerca standard Consente all’utente di scegliere se cercare nelle keyword della pagina o nel contenuto Consente di configurare più tabelle via typoscript Output configurabile via typoscript La ricerca si basa sul operatore “LIKE %...%” Pag. 11Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
  10. 10. Pro & Contro della ricerca standard Pag. 12Mauro Lorenzutti: Ricerche evolute mediante Apache Solr + Integrata + Facile da configurare - Funzionalità di base - Cerca solo nel database - LIKE %...%
  11. 11. Indexed Search Engine Pag. 13Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
  12. 12. Un’estensione di sistema Pag. 14Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
  13. 13. Indice Pag. 16Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
  14. 14. Statistiche Pag. 17Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
  15. 15. Le funzionalità della ricerca standard Consente di indicizzare pagine, record nel database, documenti, immagini, url esterni, ecc. Costruisce un indice di parole chiave per ciascun contenuto ed esegue la ricerca su questo Fornisce una percentuale di pertinenza del risultato I contenuti vengono indicizzati contestualmente alla prima visualizzazione È disponibile un crawler per indicizzare massivamente il sito Pag. 18Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
  16. 16. Pro & Contro di Indexed search engine Pag. 21Mauro Lorenzutti: Ricerche evolute mediante Apache Solr + Integrata + Indicizza pagine, record, file, url, … + Ordinamento per rilevanza + Statistiche di ricerca + Molte estensioni disponibili - Configurazione non immediata - Può rallentare la navigazione - Solo le pagine in cache vengono indicizzate - Indice salvato nel db (problemi di prestazioni)
  17. 17. Pag. 22Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
  18. 18. Apache Solr? • SolrTM is the popular, blazing fast open source enterprise search platform from the Apache LuceneTM project. Its major features include powerful full-text search, hit highlighting, faceted search, near real-time indexing, dynamic clustering, database integration, rich document (e.g., Word, PDF) handling, and geospatial search. Solr is highly reliable, scalable and fault tolerant, providing distributed indexing, replication and load-balanced querying, automated failover and recovery, centralized configuration and more. Solr powers the search and navigation features of many of the world's largest internet sites. https://lucene.apache.org/solr/ Pag. 23Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
  19. 19. Download Download: http://www.apache.org/dyn/closer.cgi/lucene/solr/4.7.0 Apache License, versione 2.0 http://www.apache.org/licenses/LICENSE-2.0 Requisiti: Java 1.6 Un application server (Tomcat, Jetty, JBoss, ecc.) Pag. 24Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
  20. 20. Ma cos’è Apache Solr? Solr è un “enterprise search server” Espone delle API REST per l’interazione Vi si possono caricare documenti (ovvero qualsiasi tipo di contenuto) via XML, JSON e CSV tramite chiamate HTTP Si possono cercare e scaricare documenti in formato XML, JSON e CSV tramite chiamate HTTP Un database NoSQL? Pag. 25Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
  21. 21. Funzionalità principali Ricerche Full-text Faceted navigation Spellchecking: “Did you mean…” Raccomandazioni: “More like this” Indicizzazione di documenti (PDF, DOC, ecc.) Gestione dei sinonimi e delle stopword Ricerche geospaziali Ottimizzato per elevato traffico e mole di dati Estendibile mediante plugin Pag. 26Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
  22. 22. Schemaless Permette di definire dinamicamente i campi che descrivono il documento Pag. 27Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
  23. 23. Interfaccia di amministrazione Pag. 28Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
  24. 24. Come integrarlo in TYPO3? Due possibilità: Apache Solr for TYPO3 (ext: solr) DIY (ext: arrangiati) Pag. 29Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
  25. 25. Apache Solr for TYPO3 Pag. 30Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
  26. 26. DIY Sono disponibili diversi client PHP, ad es.: http://www.solarium-project.org/ https://code.google.com/p/solr-php-client/ Due soluzioni “quick and dirty”: cURL file_get_contents() Pag. 31Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
  27. 27. DIY Costruiamo un esempio molto semplice Indicizziamo le news del nostro sito Implementiamo una funzionalità di ricerca Costruiamo dei filtri a faccette Pag. 32Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
  28. 28. Configuriamo il core core.properties name=news config=solrconfig.xml schema=schema.xml loadOnStartup=true Pag. 33Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
  29. 29. solrconfig.xml […] <requestHandler name="/newsImporter" class="org.apache.solr.handler.dataimport.DataImportHandler"> <lst name="defaults"> <str name="update.chain">data-extraction</str> <str name="config">newsImporter.xml</str> </lst> </requestHandler> […] Pag. 34Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
  30. 30. newsImporter.xml <dataConfig> <dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost/typo3_61?user=typo3_61&amp;password=typo3_61" batchSize="1" /> <document name="news_document"> <entity name="news" pk="uid" transformer="script:GenerateId" query="SELECT uid, pid, title, teaser, bodytext, keywords, author FROM tx_news_domain_model_news WHERE deleted=0 AND hidden=0"> </entity> </document> </dataConfig> Pag. 35Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
  31. 31. schema.xml 1/3 <schema name="typo3_news" version="1.1"> <types> <fieldtype name="string" class="solr.StrField" /> <fieldType name="long" class="solr.TrieLongField" /> <fieldType name="text_general" class="solr.TextField" positionIncrementGap="100"> <analyzer> <charFilter class="solr.MappingCharFilterFactory" mapping="mappa- accenti.txt"/> <tokenizer class="solr.StandardTokenizerFactory" /> <filter class="solr.LowerCaseFilterFactory" /> </analyzer> </fieldType> </types> Pag. 36Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
  32. 32. schema.xml 2/3 <fields> <field name="uid" type="long" indexed="true" stored="true" multiValued="false" required="true" /> <field name="title" type="text_general" indexed="true" stored="true" multiValued="false" /> <field name="teaser" type="text_general" indexed="true" stored="true" multiValued="false" /> <field name="bodytext" type="text_general" indexed="true" stored="true" multiValued="false" /> <field name="author" type="string" indexed="true" stored="true" multiValued="false" /> <field name="keywords" type="string" indexed="true" stored="true" multiValued="false" /> Pag. 37Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
  33. 33. schema.xml 3/3 <field name="_version_" type="long" indexed="true" stored="true" multiValued="false" /> <field name="fullText" type="text_general" indexed="true" stored="true" multiValued="true" /> <copyField source="title" dest="fullText" /> <copyField source="teaser" dest="fullText" /> <copyField source="bodytext" dest="fullText" /> <copyField source="author" dest="fullText" /> <copyField source="keywords" dest="fullText" /> </fields> <defaultSearchField>fullText</defaultSearchField> <solrQueryParser defaultOperator="OR" /> <uniqueKey>uid</uniqueKey> </schema> Pag. 38Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
  34. 34. DataImport Pag. 39Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
  35. 35. Interroghiamo l’indice http://localhost:8983/ solr/news/select? q=fullText:celebr* &wt=json &indent=true &facet=true &facet.field=author &facet.sort=index Pag. 40
  36. 36. Facciamolo da TYPO3 Pag. 41Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
  37. 37. Setup.txt Pag. 42Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
  38. 38. NewsSolrController.php Pag. 43Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
  39. 39. SolrService.php 1/2 Pag. 44Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
  40. 40. SolrService.php 2/2 Pag. 45Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
  41. 41. Search.html Pag. 46Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
  42. 42. Un dettaglio: Pag. 47Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
  43. 43. Pro & Contro di Apache Solr Pag. 48Mauro Lorenzutti: Ricerche evolute mediante Apache Solr + Tante tante tante tante funzionalità! + Adatto a gestire elevati volumi di dati + Molto veloce - Non integrato in TYPO3 - Impegnativo da configurare - Richiede Java - C’è molto da studiare… - Può creare dipendenza 
  44. 44. Alcuni libri utili Pag. 49Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
  45. 45. Q & A mauro.lorenzutti@webformat.com http://it.linkedin.com/in/maurolorenzutti https://twitter.com/MauroLorenzutti http://www.slideshare.net/mauro.lorenzutti Pag. 50Mauro Lorenzutti: Ricerche evolute mediante Apache Solr

×