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);