fuse.js vs fuzzysort vs fuzzy-search vs fuzzysearch vs elasticlunr
Comparação de pacotes npm de "Bibliotecas de Pesquisa Fuzzy em JavaScript"
1 Ano
fuse.jsfuzzysortfuzzy-searchfuzzysearchelasticlunrPacotes similares:
O que é Bibliotecas de Pesquisa Fuzzy em JavaScript?

As bibliotecas de pesquisa fuzzy em JavaScript ajudam os desenvolvedores a implementar algoritmos de pesquisa que podem lidar com correspondências aproximadas, em vez de exigir correspondências exatas. Isso é útil em cenários onde os usuários podem cometer erros de digitação ou quando os dados não são consistentes. Essas bibliotecas usam várias técnicas, como distância de Levenshtein, algoritmos de correspondência de padrões e pesquisa baseada em pontuação, para classificar e retornar resultados que são semelhantes, mas não idênticos, à consulta de pesquisa. Isso melhora a experiência do usuário, tornando a pesquisa mais tolerante a erros e intuitiva.

Tendência de downloads npm
Ranking de GitHub Stars
Detalhe de estatísticas
Pacote
Downloads
Stars
Tamanho
Issues
Publicado em
Licença
fuse.js4,032,80519,111456 kB16il y a 3 moisApache-2.0
fuzzysort443,6694,11145.6 kB8il y a 7 moisMIT
fuzzy-search133,375225-16il y a 5 ansISC
fuzzysearch112,9122,726-5il y a 10 ansMIT
elasticlunr30,2192,064-77il y a 9 ansMIT
Comparação de funcionalidades: fuse.js vs fuzzysort vs fuzzy-search vs fuzzysearch vs elasticlunr

Técnica de Correspondência Fuzzy

  • fuse.js:

    fuse.js usa um algoritmo de correspondência fuzzy que calcula a similaridade entre a consulta e os itens de pesquisa usando distância de Levenshtein. Ele suporta correspondência fuzzy em múltiplos campos, permitindo que os desenvolvedores especifiquem pesos para diferentes campos, o que afeta a pontuação e a ordem dos resultados.

  • fuzzysort:

    fuzzysort usa um algoritmo de pesquisa fuzzy otimizado que classifica os resultados com base na qualidade da correspondência. Ele calcula a pontuação de cada correspondência e retorna os resultados em ordem, permitindo que os usuários vejam rapidamente as correspondências mais relevantes.

  • fuzzy-search:

    fuzzy-search implementa um algoritmo simples de correspondência fuzzy que permite correspondências aproximadas em strings. Ele usa uma abordagem baseada em índice para pesquisar em listas ou arrays, tornando-o eficiente para encontrar itens que correspondem parcialmente à consulta de pesquisa.

  • fuzzysearch:

    fuzzysearch utiliza um algoritmo de correspondência fuzzy leve e rápido que se concentra em encontrar correspondências aproximadas em strings. Ele é projetado para ser simples e eficiente, com foco na velocidade e na precisão, tornando-o adequado para pesquisa em tempo real em conjuntos de dados menores.

  • elasticlunr:

    elasticlunr usa uma combinação de pesquisa de texto completo e correspondência fuzzy baseada em distância de Levenshtein para encontrar correspondências aproximadas em documentos indexados. A correspondência fuzzy é aplicada durante a pesquisa, permitindo que a biblioteca encontre termos semelhantes com base em um limite de distância configurável.

Desempenho

  • fuse.js:

    fuse.js é altamente configurável, mas o desempenho pode ser afetado com conjuntos de dados muito grandes devido à natureza do algoritmo de correspondência fuzzy. No entanto, ele é otimizado para pesquisa em tempo real e funciona bem com listas de tamanho moderado.

  • fuzzysort:

    fuzzysort é conhecido por seu desempenho rápido, especialmente em grandes conjuntos de dados. Ele classifica os resultados de forma eficiente, tornando-o ideal para aplicativos que exigem pesquisa rápida com feedback em tempo real.

  • fuzzy-search:

    fuzzy-search é projetado para ser leve e rápido, com desempenho eficiente em listas ou arrays. A complexidade do tempo é linear em relação ao número de itens pesquisados, tornando-o adequado para conjuntos de dados pequenos a médios.

  • fuzzysearch:

    fuzzysearch é uma biblioteca minimalista que oferece desempenho rápido na correspondência fuzzy de strings. Sua implementação simples garante que as pesquisas sejam realizadas rapidamente, mesmo em conjuntos de dados menores.

  • elasticlunr:

    elasticlunr oferece desempenho eficiente para pesquisa em índices de texto completo, especialmente em conjuntos de dados pequenos a médios. O tempo de pesquisa aumenta com o tamanho do índice, mas a estrutura de índice invertido ajuda a manter as consultas rápidas.

Facilidade de Uso

  • fuse.js:

    fuse.js oferece uma API fácil de usar com documentação abrangente. A capacidade de configurar pesos de campo e parâmetros de correspondência fuzzy torna a biblioteca flexível, mas pode exigir algum tempo para entender todas as suas funcionalidades.

  • fuzzysort:

    fuzzysort fornece uma API simples para pesquisa fuzzy e classificação de resultados. A documentação é clara, o que facilita a compreensão de como usar a biblioteca de forma eficaz.

  • fuzzy-search:

    fuzzy-search é fácil de usar, com uma API simples que permite a pesquisa rápida em listas. A falta de dependências e a implementação direta tornam-no acessível para desenvolvedores de todos os níveis.

  • fuzzysearch:

    fuzzysearch tem uma interface de API simples e direta, tornando-a fácil de usar para correspondência fuzzy rápida. Sua natureza minimalista significa que não há curva de aprendizado significativa.

  • elasticlunr:

    elasticlunr fornece uma API simples e intuitiva para criar índices e realizar pesquisas. A configuração inicial é direta, e a documentação é clara, facilitando a integração em projetos.

Exemplo de Código

  • fuse.js:

    Exemplo de Pesquisa Fuzzy com fuse.js

    const Fuse = require('fuse.js');
    
    // Dados de exemplo
    const data = [
      { id: 1, title: 'Hello World', description: 'This is a test document.' },
      { id: 2, title: 'Fuzzy Search', description: 'Searching with fuzzy matching is fun!' },
      { id: 3, title: 'Elastic Lunr', description: 'A lightweight full-text search library.' },
    ];
    
    // Configuração do Fuse.js
    const options = {
      keys: ['title', 'description'],
      threshold: 0.3, // Ajustar a sensibilidade da correspondência fuzzy
    };
    
    const fuse = new Fuse(data, options);
    
    // Realizar uma pesquisa fuzzy
    const results = fuse.search('fuzzy');
    
    console.log('Resultados da Pesquisa:', results);
    
  • fuzzysort:

    Exemplo de Pesquisa Fuzzy com fuzzysort

    const fuzzysort = require('fuzzysort');
    
    // Dados de exemplo
    const items = [
      'Hello World',
      'Fuzzy Search',
      'Elastic Lunr',
      'JavaScript Libraries',
      'Search Algorithms',
    ];
    
    // Realizar uma pesquisa fuzzy
    const results = fuzzysort.go('fuzzy', items);
    
    console.log('Resultados da Pesquisa:', results);
    
  • fuzzy-search:

    Exemplo de Pesquisa Fuzzy com fuzzy-search

    const { fuzzySearch } = require('fuzzy-search');
    
    // Dados de exemplo
    const items = [
      'Hello World',
      'Fuzzy Search',
      'Elastic Lunr',
      'JavaScript Libraries',
      'Search Algorithms',
    ];
    
    // Realizar uma pesquisa fuzzy
    const results = fuzzySearch('fuzzy', items);
    
    console.log('Resultados da Pesquisa:', results);
    
  • fuzzysearch:

    Exemplo de Pesquisa Fuzzy com fuzzysearch

    const fuzzysearch = require('fuzzysearch');
    
    // Dados de exemplo
    const str = 'Hello World';
    const pattern = 'fuzzy';
    
    // Verificar correspondência fuzzy
    const isMatch = fuzzysearch(pattern, str);
    
    console.log('Correspondência Fuzzy:', isMatch);
    
  • elasticlunr:

    Exemplo de Pesquisa Fuzzy com elasticlunr

    const elasticlunr = require('elasticlunr');
    
    // Criar um índice
    const index = elasticlunr(function () {
      this.addField('title');
      this.addField('body');
      this.setRef('id');
    });
    
    // Adicionar documentos ao índice
    index.addDoc({ id: 1, title: 'Hello World', body: 'This is a test document.' });
    index.addDoc({ id: 2, title: 'Fuzzy Search', body: 'Searching with fuzzy matching is fun!' });
    index.addDoc({ id: 3, title: 'Elastic Lunr', body: 'A lightweight full-text search library.' });
    
    // Realizar uma pesquisa fuzzy
    const results = index.search('fuzzy', { fuzzy: true });
    
    console.log('Resultados da Pesquisa:', results);
    
Como escolher: fuse.js vs fuzzysort vs fuzzy-search vs fuzzysearch vs elasticlunr
  • fuse.js:

    Escolha fuse.js se precisar de uma biblioteca de pesquisa fuzzy altamente configurável que funcione bem com dados não estruturados e estruturados. É adequada para aplicativos que exigem pesquisa em tempo real com suporte para múltiplos campos, pesos de campo e correspondência aproximada, tornando-a versátil para interfaces de usuário interativas.

  • fuzzysort:

    Escolha fuzzysort se precisar de uma biblioteca de pesquisa fuzzy de alto desempenho que classifique os resultados com base na qualidade da correspondência. É ideal para aplicativos que exigem pesquisa rápida e precisa em grandes conjuntos de dados, com suporte para múltiplas correspondências e uma API simples.

  • fuzzy-search:

    Escolha fuzzy-search se precisar de uma implementação simples e eficiente de pesquisa fuzzy que seja fácil de usar e não tenha dependências. É ideal para projetos que precisam de uma solução leve para pesquisar em listas ou arrays com suporte para correspondência fuzzy sem complexidade adicional.

  • fuzzysearch:

    Escolha fuzzysearch se precisar de uma biblioteca minimalista que implemente pesquisa fuzzy de forma rápida e eficiente, focando na correspondência de strings com um algoritmo simples. É adequada para projetos que exigem uma solução de pesquisa rápida com uma pegada de código pequena e sem sobrecarga.

  • elasticlunr:

    Escolha elasticlunr se precisar de uma solução de pesquisa leve e baseada em índice que suporte pesquisa de texto completo com recursos de correspondência fuzzy. É ideal para aplicativos que exigem pesquisa rápida em conjuntos de dados relativamente pequenos a médios, com a capacidade de personalizar o índice e a pontuação.