O que é busca difusa?

A busca difusa é uma técnica de pesquisa que encontra correspondências mesmo quando a consulta de pesquisa não corresponde exatamente ao texto. Ao contrário da busca exata onde "maçã" encontra apenas "maçã", a busca difusa pode encontrar "maça" (com erro de digitação), "Maçã" (maiúsculas/minúsculas diferentes) ou até "maçãs" (forma plural). Isso funciona calculando o quão similares duas strings são, levando em conta erros de digitação, erros ortográficos, diferentes maiúsculas/minúsculas e variações menores. É essencial para criar experiências de busca amigáveis onde os usuários não precisam digitar consultas perfeitamente precisas para encontrar o que procuram.

Como funciona o Fuse.js?

Fuse.js é uma biblioteca JavaScript que implementa busca difusa usando um algoritmo de correspondência aproximada de strings. Funciona através de:

  1. Indexação: Criação de uma estrutura de dados eficiente a partir dos seus dados pesquisáveis
  2. Pontuação: Cálculo de uma pontuação de similaridade entre a consulta de pesquisa e cada item (0.0 = correspondência perfeita, 1.0 = sem correspondência)
  3. Filtragem: Retorno de resultados que atendem aos critérios de limite
  4. Classificação: Ordenação dos resultados por relevância com base em suas pontuações

A biblioteca usa opções configuráveis como limite (quão difusa a busca deve ser), localização (onde esperar correspondências) e distância (quão longe da localização esperada pesquisar), dando aos desenvolvedores controle refinado sobre o comportamento da busca.

Descrição da ferramenta

O Fuse.js Playground é um ambiente de teste interativo para a biblioteca de busca difusa Fuse.js. Permite que desenvolvedores experimentem com todas as opções de configuração de busca disponíveis e vejam resultados em tempo real em dados personalizados ou de exemplo. Você pode configurar chaves de busca com pesos personalizados, ajustar opções básicas como sensibilidade a maiúsculas e inclusão de pontuação, e ajustar parâmetros avançados como limite, localização e distância. A ferramenta fornece feedback visual imediato mostrando como as alterações de configuração afetam os resultados da busca, tornando-a ideal para prototipar funcionalidade de busca antes da implementação.

Recursos

  • Entrada de dados personalizados: Carregue seus próprios dados JSON para testar o comportamento da busca em conjuntos de dados reais
  • Chaves de busca configuráveis: Defina quais campos pesquisar com prioridades de peso personalizadas
  • Resultados em tempo real: Feedback instantâneo ao modificar consultas ou opções de busca
  • Opções básicas: Controle sensibilidade a maiúsculas, manipulação de diacríticos, ordenação e exibição de pontuação
  • Ajuste fino avançado: Ajuste limite, localização, distância, normalização de campos e muito mais
  • Sintaxe de busca estendida: Teste padrões de consulta avançados como busca por prefixo (^), correspondência exata (!) e mais
  • Visualização de resultados: Visualize resultados de busca em uma tabela ordenável com pontuações de correspondência opcionais
  • Conjunto de dados de exemplo: Coleção de livros pré-carregada para testes e experimentação imediatos

Exemplos

Busca básica:

  • Consulta: "fantasia" → Encontra todos os livros na categoria fantasia
  • Consulta: "tolkien" → Encontra livros do autor J.R.R. Tolkien
  • Consulta: "senhor aneis" → Encontra "O Senhor dos Anéis" apesar das palavras faltantes

Correspondência difusa:

  • Consulta: "hary poter" (erros de digitação) → Ainda encontra "Harry Potter"
  • Consulta: "1984" → Encontra o livro de George Orwell
  • Consulta: "ficcaocientifica" → Corresponde à categoria "Ficção Científica"

Busca estendida (quando ativada):

  • Consulta: "^O" → Encontra títulos que começam com "O"
  • Consulta: "!Fantasia" → Correspondência exata para a categoria "Fantasia"
  • Consulta: "'Duna" → Encontra itens que incluem a palavra "Duna"

Opções de configuração

Chaves de busca:

  • Defina quais campos pesquisar (ex. título, autor, categoria)
  • Atribua pesos para priorizar certos campos (peso maior = mais importante)

Opções básicas:

  • Sensível a maiúsculas: Corresponde exatamente a maiúsculas/minúsculas
  • Incluir pontuação: Mostra pontuações de relevância (0.0 = perfeito, 1.0 = ruim)
  • Ignorar diacríticos: Trata caracteres acentuados como sua forma base (é = e)
  • Ordenar resultados: Ordena resultados por pontuação de relevância
  • Encontrar todas as correspondências: Continua buscando após encontrar a primeira correspondência

Opções avançadas:

  • Comprimento mín. de correspondência: Caracteres mínimos necessários para uma correspondência (padrão: 1)
  • Localização: Posição esperada das correspondências no texto (padrão: 0 = início)
  • Limite: Quão difusa a busca deve ser, de 0.0 (exato) a 1.0 (muito difuso)
  • Distância: Distância máxima da localização esperada para pesquisar
  • Usar busca estendida: Ativa sintaxe de consulta avançada (^, !, ', etc.)
  • Ignorar localização: Não considerar posição ao fazer correspondências
  • Ignorar norma de campo: Não levar em conta o comprimento do campo na pontuação
  • Peso da norma de campo: Quanto o comprimento do campo afeta a pontuação

Casos de uso

  • Teste de implementação de busca: Prototipagem e validação de funcionalidade de busca antes da codificação
  • Configuração de API: Determinação de configurações ótimas do Fuse.js para sua aplicação
  • Análise de comportamento de busca: Entender como diferentes opções afetam a qualidade dos resultados
  • Demonstrações a clientes: Mostrar às partes interessadas como a busca se comportará com dados reais
  • Aprender Fuse.js: Experimentação prática para entender as capacidades da biblioteca
  • Teste de estrutura de dados: Verificar se sua estrutura de dados JSON funciona com busca difusa
  • Ajuste de qualidade de busca: Ajustar limite e outros parâmetros para melhores resultados