Integrare Apache Solr in TYPO3

  • 292 views
Uploaded 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

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

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
292
On Slideshare
0
From Embeds
0
Number of Embeds
3

Actions

Shares
Downloads
3
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 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
  • 5. Io si!
  • 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. 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. 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. Indexed Search Engine Pag. 13Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
  • 12. Un’estensione di sistema Pag. 14Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
  • 13. Indice Pag. 16Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
  • 14. Statistiche Pag. 17Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
  • 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. 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. Pag. 22Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
  • 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. 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. 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. 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. Schemaless Permette di definire dinamicamente i campi che descrivono il documento Pag. 27Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
  • 23. Interfaccia di amministrazione Pag. 28Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
  • 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. Apache Solr for TYPO3 Pag. 30Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
  • 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. 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. Configuriamo il core core.properties name=news config=solrconfig.xml schema=schema.xml loadOnStartup=true Pag. 33Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
  • 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. 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. 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. 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. 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. DataImport Pag. 39Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
  • 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. Facciamolo da TYPO3 Pag. 41Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
  • 37. Setup.txt Pag. 42Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
  • 38. NewsSolrController.php Pag. 43Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
  • 39. SolrService.php 1/2 Pag. 44Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
  • 40. SolrService.php 2/2 Pag. 45Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
  • 41. Search.html Pag. 46Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
  • 42. Un dettaglio: Pag. 47Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
  • 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. Alcuni libri utili Pag. 49Mauro Lorenzutti: Ricerche evolute mediante Apache Solr
  • 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