5. Perch竪 竪 importante
L80% di chi acquista
usa la ricerca per trovare
quello che vuole
Chi trova un prodotto
attraverso la ricerca interna
compra il doppio delle
volte
Lutente 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 loggetto che
ha la Keyword nel nome.
Problemi Fulltext (2/3)
Rilevanza risultati
11. Problemi Fulltext (3/3)
Query: jeens
Se lutente sbaglia non
ottiene nessun risultato
Limportanza 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 lintegrazione + 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 lelenco 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