SlideShare ist ein Scribd-Unternehmen logo
1 von 50
Downloaden Sie, um offline zu lesen
Milano 14/15 Marzo 2014
Ricerche evolute
mediante Apache Solr
Mauro Lorenzutti
T3Camp Italia
Il quarto evento italiano dedicato a TYPO3
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 ;-)
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
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 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
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 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
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 %...%
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 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
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)
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. 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
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
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
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
Schemaless
Permette di definire dinamicamente i campi che descrivono
il documento
Pag. 27Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
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: Ricerche evolute mediante Apache Solr
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-client/
Due soluzioni “quick and dirty”:
cURL
file_get_contents()
Pag. 31Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
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
Configuriamo il core
core.properties
name=news
config=solrconfig.xml
schema=schema.xml
loadOnStartup=true
Pag. 33Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
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
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
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
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
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
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
&facet.field=author
&facet.sort=index
Pag. 40
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 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 
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://www.slideshare.net/mauro.lorenzutti
Pag. 50Mauro Lorenzutti: Ricerche evolute mediante Apache Solr

Weitere ähnliche Inhalte

Ähnlich wie Integrare Apache Solr in TYPO3

Museo Torino - un esempio reale d'uso di NOSQL-GraphDB, Linked Data e Web Sem...
Museo Torino - un esempio reale d'uso di NOSQL-GraphDB, Linked Data e Web Sem...Museo Torino - un esempio reale d'uso di NOSQL-GraphDB, Linked Data e Web Sem...
Museo Torino - un esempio reale d'uso di NOSQL-GraphDB, Linked Data e Web Sem...Codemotion
 
MongoDB Scala Roma SpringFramework Meeting2009
MongoDB Scala Roma SpringFramework Meeting2009MongoDB Scala Roma SpringFramework Meeting2009
MongoDB Scala Roma SpringFramework Meeting2009Massimiliano Dessì
 
MongoDb and Scala SpringFramework Meeting
MongoDb and Scala SpringFramework MeetingMongoDb and Scala SpringFramework Meeting
MongoDb and Scala SpringFramework Meetingguest67beeb9
 
TYPO3 sfida il mondo Enterprise
TYPO3 sfida il mondo EnterpriseTYPO3 sfida il mondo Enterprise
TYPO3 sfida il mondo EnterpriseMauro Lorenzutti
 
SEO ON SITE, CONTROLLARE INDICIZZAZIONE E DIRETTIVE PER GLI SPIDER - Giovanni...
SEO ON SITE, CONTROLLARE INDICIZZAZIONE E DIRETTIVE PER GLI SPIDER - Giovanni...SEO ON SITE, CONTROLLARE INDICIZZAZIONE E DIRETTIVE PER GLI SPIDER - Giovanni...
SEO ON SITE, CONTROLLARE INDICIZZAZIONE E DIRETTIVE PER GLI SPIDER - Giovanni...Giovanni Sacheli
 
IC2009 Anatomia di un Semantic Search Engine
IC2009 Anatomia di un Semantic Search EngineIC2009 Anatomia di un Semantic Search Engine
IC2009 Anatomia di un Semantic Search EngineEmanuele Della Valle
 
Il "Knowledge Graph" della Pubblica Amministrazione Italiana
Il "Knowledge Graph" della Pubblica Amministrazione ItalianaIl "Knowledge Graph" della Pubblica Amministrazione Italiana
Il "Knowledge Graph" della Pubblica Amministrazione ItalianaGraphRM
 
2015-06 Roberto Boselli, Dal dato non strutturato alle ontologie
2015-06 Roberto Boselli, Dal dato non strutturato alle ontologie2015-06 Roberto Boselli, Dal dato non strutturato alle ontologie
2015-06 Roberto Boselli, Dal dato non strutturato alle ontologieAndrea Rossetti
 
Motori di ricerca - non c'è solo Google
Motori di ricerca - non c'è solo GoogleMotori di ricerca - non c'è solo Google
Motori di ricerca - non c'è solo GoogleMediaCLA
 
Esercitazioni Ingegneria 6ed
Esercitazioni Ingegneria 6edEsercitazioni Ingegneria 6ed
Esercitazioni Ingegneria 6edbibliobioing
 
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco EcmCorso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecmedoardo fraioli
 
Io uso Tor e non lascio tracce! Sei proprio sicuro?
Io uso Tor e non lascio tracce! Sei proprio sicuro?Io uso Tor e non lascio tracce! Sei proprio sicuro?
Io uso Tor e non lascio tracce! Sei proprio sicuro?festival ICT 2016
 
7 - Ricercare nel web - 17/18
7 - Ricercare nel web - 17/187 - Ricercare nel web - 17/18
7 - Ricercare nel web - 17/18Giuseppe Vizzari
 
Presentazione Cama_Primiceri_Atro
Presentazione Cama_Primiceri_AtroPresentazione Cama_Primiceri_Atro
Presentazione Cama_Primiceri_AtroBernadetteCama
 
Elk - Elasticsearch Logstash Kibana stack explained
Elk - Elasticsearch Logstash Kibana stack explainedElk - Elasticsearch Logstash Kibana stack explained
Elk - Elasticsearch Logstash Kibana stack explainedFederico Panini
 

Ähnlich wie Integrare Apache Solr in TYPO3 (20)

Grasso Frameworks Ajax
Grasso Frameworks AjaxGrasso Frameworks Ajax
Grasso Frameworks Ajax
 
Faceted Search
Faceted SearchFaceted Search
Faceted Search
 
Museo Torino - un esempio reale d'uso di NOSQL-GraphDB, Linked Data e Web Sem...
Museo Torino - un esempio reale d'uso di NOSQL-GraphDB, Linked Data e Web Sem...Museo Torino - un esempio reale d'uso di NOSQL-GraphDB, Linked Data e Web Sem...
Museo Torino - un esempio reale d'uso di NOSQL-GraphDB, Linked Data e Web Sem...
 
MongoDB Scala Roma SpringFramework Meeting2009
MongoDB Scala Roma SpringFramework Meeting2009MongoDB Scala Roma SpringFramework Meeting2009
MongoDB Scala Roma SpringFramework Meeting2009
 
MongoDb and Scala SpringFramework Meeting
MongoDb and Scala SpringFramework MeetingMongoDb and Scala SpringFramework Meeting
MongoDb and Scala SpringFramework Meeting
 
TYPO3 sfida il mondo Enterprise
TYPO3 sfida il mondo EnterpriseTYPO3 sfida il mondo Enterprise
TYPO3 sfida il mondo Enterprise
 
SEO ON SITE, CONTROLLARE INDICIZZAZIONE E DIRETTIVE PER GLI SPIDER - Giovanni...
SEO ON SITE, CONTROLLARE INDICIZZAZIONE E DIRETTIVE PER GLI SPIDER - Giovanni...SEO ON SITE, CONTROLLARE INDICIZZAZIONE E DIRETTIVE PER GLI SPIDER - Giovanni...
SEO ON SITE, CONTROLLARE INDICIZZAZIONE E DIRETTIVE PER GLI SPIDER - Giovanni...
 
9 - Ricercare nel Web
9 - Ricercare nel Web9 - Ricercare nel Web
9 - Ricercare nel Web
 
IC2009 Anatomia di un Semantic Search Engine
IC2009 Anatomia di un Semantic Search EngineIC2009 Anatomia di un Semantic Search Engine
IC2009 Anatomia di un Semantic Search Engine
 
Il "Knowledge Graph" della Pubblica Amministrazione Italiana
Il "Knowledge Graph" della Pubblica Amministrazione ItalianaIl "Knowledge Graph" della Pubblica Amministrazione Italiana
Il "Knowledge Graph" della Pubblica Amministrazione Italiana
 
2015-06 Roberto Boselli, Dal dato non strutturato alle ontologie
2015-06 Roberto Boselli, Dal dato non strutturato alle ontologie2015-06 Roberto Boselli, Dal dato non strutturato alle ontologie
2015-06 Roberto Boselli, Dal dato non strutturato alle ontologie
 
Motori di ricerca - non c'è solo Google
Motori di ricerca - non c'è solo GoogleMotori di ricerca - non c'è solo Google
Motori di ricerca - non c'è solo Google
 
10 - Ricercare nel web II
10 - Ricercare nel web II10 - Ricercare nel web II
10 - Ricercare nel web II
 
Esercitazioni Ingegneria 6ed
Esercitazioni Ingegneria 6edEsercitazioni Ingegneria 6ed
Esercitazioni Ingegneria 6ed
 
Corso Avanzato Alfresco Ecm
Corso Avanzato Alfresco EcmCorso Avanzato Alfresco Ecm
Corso Avanzato Alfresco Ecm
 
Io uso Tor e non lascio tracce! Sei proprio sicuro?
Io uso Tor e non lascio tracce! Sei proprio sicuro?Io uso Tor e non lascio tracce! Sei proprio sicuro?
Io uso Tor e non lascio tracce! Sei proprio sicuro?
 
7 - Ricercare nel web - 17/18
7 - Ricercare nel web - 17/187 - Ricercare nel web - 17/18
7 - Ricercare nel web - 17/18
 
Presentazione Cama_Primiceri_Atro
Presentazione Cama_Primiceri_AtroPresentazione Cama_Primiceri_Atro
Presentazione Cama_Primiceri_Atro
 
Semantic Search Engine
Semantic Search EngineSemantic Search Engine
Semantic Search Engine
 
Elk - Elasticsearch Logstash Kibana stack explained
Elk - Elasticsearch Logstash Kibana stack explainedElk - Elasticsearch Logstash Kibana stack explained
Elk - Elasticsearch Logstash Kibana stack explained
 

Mehr von Mauro Lorenzutti

TYPO3 and Magento together to manage Panini Stickers
TYPO3 and Magento together to manage Panini StickersTYPO3 and Magento together to manage Panini Stickers
TYPO3 and Magento together to manage Panini StickersMauro Lorenzutti
 
TYPO3 + Magento + SugarCRM + Alfresco: An Enterprise Integrated Platform
TYPO3 + Magento + SugarCRM + Alfresco: An Enterprise Integrated PlatformTYPO3 + Magento + SugarCRM + Alfresco: An Enterprise Integrated Platform
TYPO3 + Magento + SugarCRM + Alfresco: An Enterprise Integrated PlatformMauro Lorenzutti
 
MageDay 2013 - Magento e TYPO3: una soluzione integrata
MageDay 2013 - Magento e TYPO3: una soluzione integrataMageDay 2013 - Magento e TYPO3: una soluzione integrata
MageDay 2013 - Magento e TYPO3: una soluzione integrataMauro Lorenzutti
 
Aumentiamo la sicurezza di TYPO3
Aumentiamo la sicurezza di TYPO3Aumentiamo la sicurezza di TYPO3
Aumentiamo la sicurezza di TYPO3Mauro Lorenzutti
 
Aumentiamo la sicurezza in TYPO3
Aumentiamo la sicurezza in TYPO3Aumentiamo la sicurezza in TYPO3
Aumentiamo la sicurezza in TYPO3Mauro Lorenzutti
 

Mehr von Mauro Lorenzutti (10)

TYPO3 and Magento together to manage Panini Stickers
TYPO3 and Magento together to manage Panini StickersTYPO3 and Magento together to manage Panini Stickers
TYPO3 and Magento together to manage Panini Stickers
 
TYPO3 + Magento + SugarCRM + Alfresco: An Enterprise Integrated Platform
TYPO3 + Magento + SugarCRM + Alfresco: An Enterprise Integrated PlatformTYPO3 + Magento + SugarCRM + Alfresco: An Enterprise Integrated Platform
TYPO3 + Magento + SugarCRM + Alfresco: An Enterprise Integrated Platform
 
Il FAL di TYPO3 6.x
Il FAL di TYPO3 6.xIl FAL di TYPO3 6.x
Il FAL di TYPO3 6.x
 
MageDay 2013 - Magento e TYPO3: una soluzione integrata
MageDay 2013 - Magento e TYPO3: una soluzione integrataMageDay 2013 - Magento e TYPO3: una soluzione integrata
MageDay 2013 - Magento e TYPO3: una soluzione integrata
 
TYPO3 TCA: Tips & Tricks
TYPO3 TCA: Tips & TricksTYPO3 TCA: Tips & Tricks
TYPO3 TCA: Tips & Tricks
 
Aumentiamo la sicurezza di TYPO3
Aumentiamo la sicurezza di TYPO3Aumentiamo la sicurezza di TYPO3
Aumentiamo la sicurezza di TYPO3
 
Typo3 autenticazione
Typo3 autenticazioneTypo3 autenticazione
Typo3 autenticazione
 
Aumentiamo la sicurezza in TYPO3
Aumentiamo la sicurezza in TYPO3Aumentiamo la sicurezza in TYPO3
Aumentiamo la sicurezza in TYPO3
 
Typo3 prestazioni
Typo3 prestazioniTypo3 prestazioni
Typo3 prestazioni
 
Typo3 alfresco
Typo3 alfrescoTypo3 alfresco
Typo3 alfresco
 

Integrare Apache Solr in TYPO3

  • 1. Milano 14/15 Marzo 2014 Ricerche evolute mediante Apache Solr Mauro Lorenzutti T3Camp Italia Il quarto evento italiano dedicato a TYPO3
  • 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. 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. 50 slide… Tutti pronti? Pag. 4Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
  • 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. La ricerca standard di TYPO3 Pag. 7Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
  • 8. Un contenuto standard Pag. 8Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
  • 9.
  • 10.
  • 11. 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
  • 12. 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 %...%
  • 13. Indexed Search Engine Pag. 13Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
  • 14. Un’estensione di sistema Pag. 14Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
  • 15.
  • 16. Indice Pag. 16Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
  • 17. Statistiche Pag. 17Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
  • 18. 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
  • 19.
  • 20.
  • 21. 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)
  • 22. Pag. 22Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
  • 23. 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
  • 24. 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
  • 25. 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
  • 26. 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
  • 27. Schemaless Permette di definire dinamicamente i campi che descrivono il documento Pag. 27Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
  • 28. Interfaccia di amministrazione Pag. 28Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
  • 29. Come integrarlo in TYPO3? Due possibilità: Apache Solr for TYPO3 (ext: solr) DIY (ext: arrangiati) Pag. 29Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
  • 30. Apache Solr for TYPO3 Pag. 30Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
  • 31. 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
  • 32. 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
  • 34. 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
  • 35. 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
  • 36. 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
  • 37. 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
  • 38. 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
  • 39. DataImport Pag. 39Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
  • 41. Facciamolo da TYPO3 Pag. 41Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
  • 42. Setup.txt Pag. 42Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
  • 43. NewsSolrController.php Pag. 43Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
  • 44. SolrService.php 1/2 Pag. 44Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
  • 45. SolrService.php 2/2 Pag. 45Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
  • 46. Search.html Pag. 46Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
  • 47. Un dettaglio: Pag. 47Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
  • 48. 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 
  • 49. Alcuni libri utili Pag. 49Mauro Lorenzutti: Ricerche evolute mediante Apache Solr