Relevanssi o CelerSearch: quale plugin di ricerca scegliere per WooCommerce
Relevanssi lavora dentro il database di WordPress, CelerSearch collega WooCommerce a Meilisearch. Li abbiamo misurati entrambi su un catalogo di 20.000 prodotti con 167.584 varianti: velocità, copertura, precisione e i limiti che nessuno dei due risolve con le impostazioni predefinite.
Le due strade per sistemare la ricerca di WooCommerce
La ricerca nativa di WooCommerce guarda il titolo e l'estratto del prodotto, e nient'altro. Non vede i codici articolo, non vede gli attributi, non vede le categorie. Su un catalogo con taglie e colori questo significa che la maggior parte delle ricerche utili restituisce una pagina vuota, e non è un problema di configurazione: non esiste un'impostazione che lo corregga.
Chi cerca una soluzione gratuita trova due strade. Relevanssi sostituisce il motore di ricerca di WordPress lavorando dentro il database del sito. CelerSearch lascia il database dov'è e instrada la ricerca verso Meilisearch, un motore esterno installato su un'altra macchina.
Le abbiamo misurate entrambe su un catalogo di 20.000 prodotti di abbigliamento con 167.584 varianti, sottoponendo a ciascuna le stesse ventisei domande.
Cosa fa Relevanssi e dove si ferma
Relevanssi è il plugin più diffuso per sostituire la ricerca di WordPress. Costruisce un indice invertito in una tabella dedicata del database e vi include attributi, tassonomie e campi personalizzati. È esattamente quello che manca a WooCommerce, e il risultato si vede: le ricerche senza risposta scendono da venti a due.
I costi che introduce sono però di tre ordini.
Il primo è la velocità. La metà delle ricerche supera i sette secondi e mezzo, e diciannove su ventisei superano i cinque. Non è un problema di hardware: triplicando la memoria assegnata al database il guadagno è del sedici per cento. Il collo di bottiglia è architetturale, perché Relevanssi esegue due interrogazioni SQL per ogni parola cercata e ricombina i risultati in PHP.
Il secondo è lo spazio. Mezzo gigabyte di indice, costruito in otto ore e quaranta minuti, che finisce dentro il database del sito e ne diventa la seconda tabella per dimensione, cinque volte più grande dei contenuti veri. Da quel momento se lo portano dietro tutti i backup.
Il terzo non si vede, ed è il più serio.
Il comportamento di Relevanssi che gonfia i risultati
Relevanssi si può configurare perché pretenda tutte le parole della ricerca, che è la scelta giusta per un catalogo. Ma esiste un comportamento predefinito che la vanifica: quando non trova nulla con tutte le parole, rifà la ricerca accettandone anche una sola, e non lo segnala.
Su una domanda come «vestito di seta rosso da donna», la cui risposta corretta conta sette prodotti, Relevanssi ne restituisce millequattrocentosettanta, di cui nessuno pertinente fra i primi cento.
Il punto è che formalmente quella ricerca ha funzionato: ha prodotto risultati. Se si misura la qualità contando quante ricerche «trovano qualcosa», Relevanssi appare ottimo. Per chi compra, millequattrocento prodotti sbagliati sono peggio di una pagina vuota: una pagina vuota è un'informazione onesta.
Le taglie S, M e L non entrano nell'indice di Relevanssi
Relevanssi ha un parametro di lunghezza minima delle parole, impostato di serie a due caratteri. Le stringhe più corte vengono scartate in silenzio. Contando i termini presenti nell'indice, xs, xl, xxl e 3xl ci sono tutti con migliaia di occorrenze ciascuno, mentre s, m e l non esistono affatto.
La ricerca «maglione taglia M» non può funzionare, perché quella lettera non è mai entrata nell'indice. Si può abbassare il parametro a uno, ma allora ogni articolo e ogni preposizione finiscono indicizzati e la precisione peggiora altrove.
Due limiti minori ma rilevanti: Relevanssi non riconosce i plurali italiani, quindi chi cerca «giacche» non vede le oltre sedicimila «giacca», e non tollera i refusi.
Cosa cambia con CelerSearch e Meilisearch
CelerSearch è un plugin WordPress gratuito che non contiene un motore di ricerca: lo collega. Il motore, Meilisearch, va installato su una macchina separata, che può essere un server piccolo da pochi euro al mese.
Il confronto con Relevanssi è netto su ogni indicatore. Le ricerche senza risposta scendono da due a quattro complessive su un totale diverso, ma soprattutto la copertura media sale dal 52 al 66 per cento e il tempo mediano di risposta passa da 7.758 millisecondi a 87. L'indice scende a 140 megabyte e, cosa più importante, sta fuori dal database del negozio.
CelerSearch offre anche un'interfaccia di configurazione più completa di quella di diversi prodotti a pagamento: regole di ranking, attributi cercabili e filtrabili, sinonimi, parole da ignorare, tolleranza ai refusi, ricerca semantica.
Relevanssi o CelerSearch: quale scegliere
Se il sito è editoriale, o il catalogo conta poche centinaia di prodotti senza varianti, Relevanssi va benissimo. È maturo, mantenuto, ben scritto, e risolve un problema reale di WordPress con un costo proporzionato.
Se il catalogo conta migliaia di prodotti con varianti, CelerSearch è la scelta migliore su ogni parametro misurato, e la migrazione da Relevanssi si ripaga il giorno stesso: ottantanove volte più veloce, indice fuori dal database, nessun costo di licenza.
Resta una differenza pratica da conoscere: CelerSearch trasmette i documenti al motore uno per richiesta HTTP, mentre Meilisearch è ottimizzato per riceverli a lotti. Sullo stesso catalogo, l'indicizzazione richiede 2,4 ore contro i tre minuti di un caricamento a lotti. Il processo è inoltre pilotato dal browser: se chiudete la scheda, si ferma.
Perché nessuno dei due basta con le impostazioni predefinite
È la parte che sorprende, e vale sia per Relevanssi sia per CelerSearch.
Abbiamo confrontato due integrazioni verso la stessa istanza di Meilisearch, sulla stessa macchina, con lo stesso catalogo e le stesse ventisei domande. Una è CelerSearch con le impostazioni predefinite. L'altra è 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.
Ventotto punti che non dipendono dal plugin. Le quattro ricerche rimaste a vuoto sono tutte frasi come «cappotto da uomo taglia 52», e falliscono perché il campo delle parole da ignorare è vuoto: senza quella lista le preposizioni diventano termini obbligatori, e nessun prodotto le contiene. Il campo dei sinonimi è vuoto allo stesso modo, e nel catalogo la parola «vestito» non compare da nessuna parte, perché i prodotti si chiamano «abito».
Sono caselle che l'interfaccia di CelerSearch espone. Nessuno le compila, e nessuno dice che vanno compilate né cosa metterci.
Altre due differenze riguardano invece come viene costruito il documento da indicizzare, e non si risolvono con un'impostazione. La prima sono i codici delle varianti, che sono quelli stampati sulle etichette e che nessuno dei due plugin rende trovabili. La seconda sono le combinazioni: selezionando «blu» e «taglia 40» entrambi applicano due condizioni indipendenti, e un prodotto su venti fra quelli mostrati non esiste in quella combinazione.
In sintesi: Relevanssi risolve il problema strutturale di WooCommerce a un costo che diventa insostenibile oltre qualche migliaio di prodotti, e il suo comportamento di ripiego produce risultati numerosi e sbagliati che le misure superficiali scambiano per successo.
CelerSearch è nettamente migliore su ogni parametro e va preferito su qualunque catalogo di dimensione reale.
Ma installare il plugin giusto porta il negozio a metà strada. La seconda metà sta in decisioni che nessun plugin prende al posto vostro, perché dipendono dalla lingua del catalogo, da come chiamate i prodotti, da quali assi di variazione usate e dal lessico del vostro settore.
I dati completi, il protocollo e i risultati per singola interrogazione sono nel caso studio: Benchmark della ricerca WooCommerce su un catalogo di 20.000 prodotti.