Meet Magento Italy - 3 e 4 giugno 2014 - Milano
Luca Peressini: Talk Business
Integrare Apache Solr in Magento per migliorare la ricerca.
Gli utenti di un sito eCommerce che usano il motore di ricerca hanno un tasso di conversione molto più alto rispetto agli utenti che non lo usano. Lo dimostrano diversi studi. Alcuni parlano addirittura di un raddoppio del conversion rate quando l’utente passa attraverso la ricerca del sito. Qualora però l’utente non trovi subito il prodotto che cerca, è il bounce rate a crescere in modo pericoloso, trasformando così in un’arma a doppio taglio le funzionalità di ricerca, se non sono sufficientemente intelligenti.
Fornire, perciò, un servizio di ricerca semplice e veloce, e allo stesso tempo completo e ricco di funzionalità perché l’utente trovi il prodotto desiderato anche quando non sa esattamente cosa cercare, è fondamentale.
Il motore di ricerca offerto da Magento non è sufficiente a questo scopo, ma diviene molto performante se integrato con uno strumento come Apache Solr, ovvero una enterprise search platform che consente di indicizzare i prodotti del proprio sito eCommerce e di offrire funzionalità di ricerca veloci e pro-attive (in grado, tra le altre cose, di prevedere cosa l’utente sta cercando e di dargli dei suggerimenti).
Luca Peressini nel suo talk presenta un confronto tra le funzionalità di ricerca standard di Magento e quelle fornite dall’integrazione con Apache Solr, spunto da cui partire per analizzare i vantaggi, le potenzialità e le modalità di adozione di questa piattaforma.
5. Perchè è importante
“L’80% di chi acquista
usa la ricerca per trovare
quello che vuole”
“Chi trova un prodotto
attraverso la ricerca interna
compra il doppio delle
volte”
“L’utente non ha sempre
voglia e pazienza di navigare il
catalogo per trovare quello
che vuole”
Suggerimenti
Rich auto-complete search
box
Aumenta le vendite fino a
4 volte
Jakob Nielsen, UseIt.com
6. Rilevanza dei risultati
“I migliori della classe, per
quanto riguarda la rilevanza
della ricerca, riescono a
fornire il prodotto cercato tra i
primi 10 solo nel 67% dei
casi”
La ricerca è un aspetto complesso che deve essere
adattato al tipo di dominio e al gruppo di utenti.
Aberdeen Group study
Abituati bene
7. Cosa offre Magento EE
Like
Fulltext serach
Like + Fulltext
- Non perde risultati
- Problemi di prestazioni
- Tende a restituire più di quello che serve
- Molto veloce anche su database grandi
- Risultati spesso poco rilevanti
- Poca personalizzazione (score e token)
- Migliora la rilevanza della ricerca
- Problemi di prestazioni
8. Mysql Fulltext
2 Modalità
Natural Language Boolean Mode
- Score basato su TF-IDF
(“term frequency / inverse document frequency”)
- MATCH (+keyword1, -keyword2)
- Score basato su numero di match
- Pesi diversi alle parole
- No customizzazioni sul metodo che usa per spezzare in parole - Tokenize
- Numero minimo di caratteri 4 (impostazione modificabile a livello global)
- Elenco di stopwords (impostazione modificabile a livello global)
- Le parole presenti nel 50% dei documenti vengono trattate come stopwords
Caratteristiche comuni
9. Problemi Fulltext (1/3)
Risultato atteso:
http://dev.mysql.com/doc/refman/5.7/en//fulltext-stopwords.html
Problemi Fulltext
Lunghezza minima della parola 4 caratteri e lista di parole ignorate: “Seven bag”
10. Query: “school”
Calcolo della rilevanza disatteso, vorrei
che il primo risultato fosse l’oggetto che
ha la Keyword nel nome.
Problemi Fulltext (2/3)
Rilevanza risultati
11. Problemi Fulltext (3/3)
Query: “jeens”
Se l’utente sbaglia non
ottiene nessun risultato
L’importanza del
Did you mean...
Spellcheck
13. cos’è
High performance search engine server (basato su )
Open Source - 100% Java
caratteristiche
- Funzionalità avanzate di ricerca fulltext
- Flessibile e configurabile via XML
- Estendibile attraverso plug-in
- REST-like APIs
- Eseguito esternamente alla web-app in un Java servlet container (Tomcat, Jetty …)
- Ottimizzato per alti volumi di traffico e predisposto per scalare (replication e sharding)
- Indicizza documenti come insiemi di attributi (chiave valore)
- Parser di documenti di formati diversi (es. word, PDF, ...)
Attuali versioni stabili: 3.6.2 - 4.8.1
14. Funzionalità di ricerca avanzata
- Stemming Es. "pescare", "pescato", "pescatore" si riferisco a "pesce"
- Fuzzy search (es. shirt = sirt)
- Score dei risultati basati su
(VSM, TF, IDF, doc/query Boost, funzioni custom es. log(sum(popularity,1)))
- Schemaless
- Faccette (Layer navigation)
- Content elevation (risultati sponsorizzati)
- Did you mean?
- Stopwords e Synonyms (divisi per lingua)
- Recommendations (More Like This)
- Geographical search
15. Configurabile da XML
- ${solr.solr.home}/solr.xml
- ${istanceDir}/conf/solrconfig.xml
- ${istanceDir}/conf/schema.xml
(configurazioni: cache, ricerca, index …)
(definisce la struttura dei documenti che indicizza)
<fieldType name="text_en"
class="solr.TextField" ..>
<analyzer type="index">
<tokenizer />
<charFilter />
<filter />
</analyzer>
<analyzer ..
</fieldType>
<!-- System required fields. -->
<field name="id" type="string" indexed="true" required="true" stored="true"/>
<field name="in_stock" type="boolean" indexed="true" required="true"/>
<dynamicField name="*_def" type="textgen" indexed="true"/>
<dynamicField name="*_en" type="text_en" indexed="true"/>
<dynamicField name="*_fr" type="text_fr" indexed="true"/>
<dynamicField name="*_de" type="text_de" indexed="true"/>
Esempio di Schema
16. Solr + Magento EE
- Codice EE per l’integrazione + pre-configurazione per Solr 3.6.2
- Sostituisce la ricerca standard con fallback a Mysql nel caso Solr non risponda
- Sistema di indexing integrato
- Ritorna l’elenco degli ID
17. Solr + Magento EE
- Suggerimenti e autocorrezioni
- Calolo della rilevanza in base
al peso degli attributi
- Stopwords multi-lingua
- Faccette (Layer navigation)
- Ricerca con caratteri speciali
spider man | spiderman = > spider-man
- Migliori performance
Con elevato traffico, Solr evita i frequenti updates
della tabella MySQLcatalogsearch_fulltext e mitiga il
problema dei lock del db.
- Maggiore controllo e personalizzazione
- Scalabile
18. Cosa Manca?
- Auto-completamento o Rich Auto-Complete Search Box
- More Like this
- Indicizzare contenuti correlati ai prodotti (blog aziendale + Manuali in PDF)
- Regole custom per calcolo rilevanza (più venduti ecc.)
20. Analisi sui dati 7.4 million Posts = 8.18 GB
Like
index 0
index size 0
query 49k-399k ms
(%% - rexExp)
Fulltext (MyISAM)
index 31m18s
index size 2382MiB
query 16-200ms
(boolean - natural)
Fulltext (InnoDB)
index 25m27s
index size ?
query 350-740ms
Apache Solr
index 14m28
index size 2766MiB
query 79ms
Full Text Search Throwdown Bill Karwin, Percona Inc.
Ricerca del 2012
2 aspetti da considerare in Magento
Test su strada
Dataset
Ricerca per keyword Navigazione catalogo
21. Ricerca per keyword
Maximizing Performance and Scalability with Magento Enterprise Edition
http://www.magentocommerce.com/whitepaper/
22. Nostri test interni
Ricerca Concorrenza Tempo di risposta medio
Like 1 2.09
Like 5 3
Like 10 5
Like 20 13.65 sec
Fullsearch 1 1.4
Fullsearch 5 1.96
Fullsearch 10 3.04
Fullsearch 20 5.14
Solr 1 1.45
Solr 5 2.20
Solr 10 3.06
Solr 20 5.4
50K prodotti
Quad core
4GB di ram