Ricerca WooCommerce: 20 query su 26 senza risposta.
WooCommerce nativo, Relevanssi, CelerSearch e Meilisearch a confronto su un catalogo di 20.000 prodotti con 167.584 varianti. Venti ricerche su ventisei restituiscono una pagina vuota sulla configurazione di partenza, e due integrazioni che usano lo stesso motore Meilisearch danno risultati distanti 28 punti di copertura.
Perché la ricerca di WooCommerce non trova i prodotti per taglia e colore
La ricerca nativa di WooCommerce interroga solo il titolo e l'estratto del prodotto. Non vede i codici articolo, non vede gli attributi, non vede le categorie. Se taglia, colore e materiale sono attributi, e in un catalogo di abbigliamento lo sono sempre, la ricerca «giacca blu lino taglia 40» non può funzionare.
Non è un difetto di configurazione: non esiste un'impostazione di WooCommerce che lo corregga, perché il problema riguarda che cosa il sistema cerca, non come lo cerca.
Per quantificarlo abbiamo costruito un catalogo di 20.000 prodotti di abbigliamento con 167.584 varianti e sottoposto quattro sistemi di ricerca alle stesse 26 domande: WooCommerce nativo, Relevanssi, CelerSearch e Meilisearch. Venti domande su ventisei restituiscono una pagina vuota sulla ricerca nativa.
Le sei che funzionano sono quelle in cui la parola cercata compare letteralmente nel titolo del prodotto.
Relevanssi risolve la copertura ma introduce tre costi
Relevanssi è il plugin più diffuso per sostituire la ricerca di WordPress e indicizza attributi, tassonomie e campi personalizzati. Le ricerche a vuoto scendono da venti a due. Il miglioramento è reale.
Il primo costo è il tempo: la metà delle ricerche supera i sette secondi e mezzo. Non dipende dall'hardware, perché triplicando la memoria del database il guadagno è solo del sedici per cento.
Il secondo è lo spazio: mezzo gigabyte di indice costruito in otto ore e quaranta minuti, collocato dentro il database del sito, dove diventa la seconda tabella per dimensione.
Il terzo non si vede. Quando Relevanssi non trova nulla pretendendo tutte le parole, ripete la ricerca accettandone una sola e non lo segnala. Su una domanda la cui risposta corretta conta sette prodotti ne restituisce millequattrocento, nessuno pertinente fra i primi cento. Chi misura la qualità contando quante ricerche «trovano qualcosa» classifica questo comportamento come successo.
Da sapere: Relevanssi non riconosce i plurali italiani, non tollera i refusi, e per una scelta predefinita le taglie S, M e L non entrano affatto nel suo indice.
Quanto è più veloce Meilisearch rispetto a Relevanssi
Meilisearch è un motore di ricerca open source che si installa su una macchina separata dal sito. Sullo stesso catalogo di 20.000 prodotti, il tempo mediano di risposta passa da oltre sette secondi a meno di novanta millisecondi, l'indice scende a un terzo e si costruisce in tre minuti anziché in otto ore, e non pesa più sul database del negozio.
Quei novanta millisecondi comprendono settanta millisecondi di rete fra due macchine in datacenter diversi: il motore lavora in pochi millisecondi.
Perché lo stesso motore di ricerca produce risultati diversi
È il risultato principale del benchmark. Abbiamo confrontato due integrazioni verso la stessa istanza di Meilisearch, sulla stessa macchina, con lo stesso catalogo e le stesse ventisei domande.
La prima è CelerSearch, plugin WordPress gratuito, installato con le impostazioni predefinite. La seconda è una configurazione costruita dopo aver analizzato il catalogo.
Il tempo di risposta è identico, perché è lo stesso motore. Ma la copertura passa dal 66 al 94 per cento e le ricerche senza risposta da quattro a zero.
CelerSearch resta nettamente superiore a Relevanssi su ogni indicatore, e chi usa Relevanssi guadagna moltissimo passando a CelerSearch. Le differenze che seguono non sono difetti del plugin: sono decisioni che il plugin non prende al posto di chi lo installa.
Le sei decisioni che determinano la qualità della ricerca
Parole da ignorare. Le quattro ricerche rimaste a vuoto sono tutte frasi, come «vestito di seta rosso da donna». Senza una lista di parole da ignorare, le preposizioni diventano termini obbligatori e nessun prodotto le contiene. Sessanta parole italiane risolvono il problema.
Sinonimi. In questo catalogo «vestito» non compare da nessuna parte: i prodotti si chiamano «abito». Con tredici equivalenze dichiarate, quella ricerca passa da zero a sette risultati su sette attesi.
Etichetta accanto al valore. La ricerca «taglia 40» contiene una parola che nel catalogo non esiste: «taglia». Il valore è un attributo, l'etichetta appartiene allo schema. Va generata durante l'indicizzazione.
Codici delle varianti. Il codice stampato sull'etichetta di un capo è quello della variante, non del prodotto. Nella maggior parte delle integrazioni non trova nulla. Arrotolando i 167.584 codici dentro i 20.000 prodotti che li contengono funziona, e l'indice si costruisce in tre minuti anziché in ore.
Combinazioni reali. Selezionando «blu» e «taglia 40» quasi tutte le implementazioni applicano due condizioni indipendenti. Ma un capo può esistere in blu taglia 42 e in verde taglia 40 senza esistere in blu taglia 40. Un prodotto su venti mostrato da un filtro combinato non esiste nella combinazione richiesta.
Ordine dei campi. Cercando «lino» le due configurazioni trovano gli stessi 2.803 prodotti, ma una ha precisione del settanta per cento e l'altra del cento. In una il nome del fornitore pesa quanto il materiale, e i prodotti di «Cotone e Lino Sud» salgono insieme a quelli davvero di lino.
Le domande a cui la ricerca per parole chiave non può rispondere
«Qualcosa di caldo per l'inverno», «cosa metto a un matrimonio», «vestiti per andare a correre»: cinque domande sensate, cinque pagine vuote. Non perché manchi la risposta, ma perché quelle parole non compaiono in nessuna scheda prodotto.
La ricerca semantica risolve questa classe di domande, e Meilisearch la esegue sulla propria macchina senza servizi esterni e senza costi per interrogazione. Nel nostro test le cinque domande sono passate da zero a risposte pertinenti in poche decine di millisecondi.
Installare il motore non basta
La ricerca nativa di WooCommerce non è configurabile per fare quello che serve. I plugin che operano dentro il database migliorano la copertura ma introducono costi propri. Un motore esterno come Meilisearch risolve velocità e occupazione.
Ma la differenza fra 66 e 94 per cento di copertura, a parità di motore, macchina e catalogo, sta interamente in decisioni prese prima che il motore entri in funzione. Nessuna di quelle decisioni è automatizzabile, perché dipende dalla lingua del catalogo, dalle convenzioni di denominazione, dagli assi di variazione e dal lessico del settore.
Un plugin installato con le impostazioni predefinite porta il negozio a metà strada. La seconda metà è quella in cui si collocano le ricerche che generano ordini.
I dati completi, il protocollo, l'elenco delle ventisei interrogazioni e i risultati per singolo caso sono nel caso studio: Benchmark della ricerca WooCommerce su un catalogo di 20.000 prodotti.