Cos'è la ricerca fuzzy?

La ricerca fuzzy è una tecnica di ricerca che trova corrispondenze anche quando la query di ricerca non corrisponde esattamente al testo. A differenza della ricerca esatta dove "mela" trova solo "mela", la ricerca fuzzy può trovare "mla" (con un errore di battitura), "Mela" (maiuscolo/minuscolo diverso) o anche "mele" (forma plurale). Questo funziona calcolando quanto due stringhe sono simili, tenendo conto di errori di battitura, errori di ortografia, diverse maiuscole/minuscole e variazioni minori. È essenziale per creare esperienze di ricerca user-friendly dove gli utenti non devono digitare query perfettamente accurate per trovare ciò che cercano.

Come funziona Fuse.js?

Fuse.js è una libreria JavaScript che implementa la ricerca fuzzy utilizzando un algoritmo di corrispondenza approssimativa di stringhe. Funziona attraverso:

  1. Indicizzazione: Creazione di una struttura dati efficiente dai tuoi dati ricercabili
  2. Punteggio: Calcolo di un punteggio di similarità tra la query di ricerca e ogni elemento (0.0 = corrispondenza perfetta, 1.0 = nessuna corrispondenza)
  3. Filtraggio: Restituzione dei risultati che soddisfano i criteri di soglia
  4. Classificazione: Ordinamento dei risultati per rilevanza in base ai loro punteggi

La libreria utilizza opzioni configurabili come soglia (quanto fuzzy dovrebbe essere la ricerca), posizione (dove aspettarsi le corrispondenze) e distanza (quanto lontano dalla posizione attesa cercare), dando agli sviluppatori un controllo fine sul comportamento della ricerca.

Descrizione dello strumento

Il Fuse.js Playground è un ambiente di test interattivo per la libreria di ricerca fuzzy Fuse.js. Consente agli sviluppatori di sperimentare con tutte le opzioni di configurazione della ricerca disponibili e vedere risultati in tempo reale su dati personalizzati o di esempio. Puoi configurare chiavi di ricerca con pesi personalizzati, regolare opzioni di base come sensibilità alle maiuscole e inclusione del punteggio, e mettere a punto parametri avanzati come soglia, posizione e distanza. Lo strumento fornisce feedback visivo immediato mostrando come le modifiche alla configurazione influenzano i risultati della ricerca, rendendolo ideale per prototipare funzionalità di ricerca prima dell'implementazione.

Funzionalità

  • Input di dati personalizzati: Carica i tuoi dati JSON per testare il comportamento della ricerca su dataset reali
  • Chiavi di ricerca configurabili: Definisci quali campi cercare con priorità di peso personalizzate
  • Risultati in tempo reale: Feedback istantaneo mentre modifichi query o opzioni di ricerca
  • Opzioni base: Controlla sensibilità alle maiuscole, gestione dei diacritici, ordinamento e visualizzazione del punteggio
  • Ottimizzazione avanzata: Regola soglia, posizione, distanza, normalizzazione dei campi e altro
  • Sintassi di ricerca estesa: Testa pattern di query avanzati come ricerca per prefisso (^), corrispondenza esatta (!) e altro
  • Visualizzazione dei risultati: Visualizza i risultati della ricerca in una tabella ordinabile con punteggi di corrispondenza opzionali
  • Dataset di esempio: Collezione di libri precaricata per test e sperimentazione immediati

Esempi

Ricerca di base:

  • Query: "fantasy" → Trova tutti i libri nella categoria fantasy
  • Query: "tolkien" → Trova libri dell'autore J.R.R. Tolkien
  • Query: "signore anelli" → Trova "Il Signore degli Anelli" nonostante le parole mancanti

Corrispondenza fuzzy:

  • Query: "hary poter" (errori di battitura) → Trova comunque "Harry Potter"
  • Query: "1984" → Trova il libro di George Orwell
  • Query: "scifi" → Corrisponde alla categoria "Science Fiction"

Ricerca estesa (quando abilitata):

  • Query: "^Il" → Trova titoli che iniziano con "Il"
  • Query: "!Fantasy" → Corrispondenza esatta per la categoria "Fantasy"
  • Query: "'Dune" → Trova elementi che includono la parola "Dune"

Opzioni di configurazione

Chiavi di ricerca:

  • Definisci quali campi cercare (es. titolo, autore, categoria)
  • Assegna pesi per dare priorità a determinati campi (peso maggiore = più importante)

Opzioni base:

  • Sensibile alle maiuscole: Corrisponde esattamente alle maiuscole/minuscole
  • Includi punteggio: Mostra punteggi di rilevanza (0.0 = perfetto, 1.0 = scarso)
  • Ignora diacritici: Tratta i caratteri accentati come loro forma base (é = e)
  • Ordina risultati: Ordina i risultati per punteggio di rilevanza
  • Trova tutte le corrispondenze: Continua la ricerca dopo aver trovato la prima corrispondenza

Opzioni avanzate:

  • Lunghezza min. corrispondenza: Caratteri minimi richiesti per una corrispondenza (predefinito: 1)
  • Posizione: Posizione attesa delle corrispondenze nel testo (predefinito: 0 = inizio)
  • Soglia: Quanto fuzzy dovrebbe essere la ricerca, da 0.0 (esatto) a 1.0 (molto fuzzy)
  • Distanza: Distanza massima dalla posizione attesa per cercare
  • Usa ricerca estesa: Abilita sintassi di query avanzata (^, !, ', ecc.)
  • Ignora posizione: Non considerare la posizione durante la corrispondenza
  • Ignora norma campo: Non considerare la lunghezza del campo nel punteggio
  • Peso norma campo: Quanto la lunghezza del campo influenza il punteggio

Casi d'uso

  • Test di implementazione della ricerca: Prototipazione e validazione della funzionalità di ricerca prima della codifica
  • Configurazione API: Determinazione delle impostazioni ottimali di Fuse.js per la tua applicazione
  • Analisi del comportamento della ricerca: Comprendere come diverse opzioni influenzano la qualità dei risultati
  • Dimostrazioni ai clienti: Mostrare alle parti interessate come si comporterà la ricerca con dati reali
  • Apprendimento di Fuse.js: Sperimentazione pratica per comprendere le capacità della libreria
  • Test della struttura dati: Verificare che la tua struttura dati JSON funzioni con la ricerca fuzzy
  • Ottimizzazione della qualità della ricerca: Mettere a punto soglia e altri parametri per risultati migliori