
Busca inteligente em e-commerce: além do SQL LIKE
A busca é a funcionalidade mais usada em e-commerces com catálogos acima de algumas centenas de produtos. Quando funciona bem, ela é invisível — o cliente digita, encontra, compra. Quando funciona mal, o cliente digita "tenis branco", não encontra o "Tênis Branco" que está no catálogo, e vai comprar no concorrente. Pesquisas de UX da Baymard Institute mostram consistentemente que uma busca ruim está correlacionada com até 30% de perda de conversão entre usuários que a utilizam.
O problema começa quando e-commerces implementam busca com SQL LIKE '%tênis%'. Funciona para casos exatos, falha para tudo mais: acentuação, plural/singular, erros de digitação, sinônimos, ordem de palavras. A solução para busca relevante em produção passa por motores especializados.
O Problema do SQL LIKE para Buscas em Produção
O LIKE do SQL é uma busca por substring. Ele encontra exatamente o que você digitou, na ordem que você digitou, sem tolerância a variações. Na prática, isso significa:
- "tenis" não encontra "tênis" (sem acento)
- "bermuda jeans" não encontra "jeans bermuda" (ordem diferente)
- "celulr" não encontra "celular" (erro de digitação)
- "smartphone" não encontra "celular" (sinônimo)
- Performance degrada exponencialmente com o crescimento do catálogo
Além disso, LIKE '%termo%' não usa índices da forma eficiente — a consulta faz varredura full-table em tabelas grandes, gerando lentidão que impacta diretamente a experiência.
O ILIKE do PostgreSQL e o FULLTEXT INDEX do MySQL resolvem parte do problema (maiúsculas/minúsculas, busca por palavras individuais), mas ainda não tratam fuzzy search, sinônimos ou ranking por relevância. São melhorias marginais sobre uma abordagem fundamentalmente inadequada para busca séria.
Elasticsearch vs Algolia vs Typesense: Comparativo
As três opções dominam o mercado de busca para e-commerce, com perfis muito diferentes:
| Critério | Elasticsearch | Algolia | Typesense |
|---|---|---|---|
| Modelo | Self-hosted / Cloud | SaaS | Self-hosted / Cloud |
| Custo (catálogo médio) | $50-200/mês (infra) | $500-2.000/mês | $30-100/mês (Cloud) |
| Latência de busca | 50-200ms | 1-10ms | 5-50ms |
| Configuração inicial | Alta | Baixa | Média |
| Fuzzy search | Configurável | Automático | Automático |
| Sinônimos | Sim | Sim | Sim |
| Ranking personalizado | Alto controle | Médio controle | Médio controle |
| Escalabilidade | Muito alta | Alta (gerenciada) | Alta |
| Ideal para | Operações complexas, grande volume | Time sem especialista em search | Alternativa open-source ao Algolia |
Elasticsearch é a escolha para operações que precisam de controle máximo: ranking personalizado com múltiplos sinais (vendas, margem, estoque, comportamento do usuário), análise de logs de busca, correlação com outras fontes de dados. A curva de aprendizado é alta — configurar analisadores de texto para português, mapeamentos de campos e estratégias de relevância exige conhecimento especializado.
Algolia é a escolha quando velocidade de implementação importa mais que controle. A API é simples, o dashboard permite ajustar ranking sem código e a performance de 1-10ms é difícil de bater. O custo escala com o volume de operações, o que pode torná-lo caro para e-commerces de alto tráfego.
Typesense é a alternativa open-source com UX próxima do Algolia. Pode ser self-hosted, o que elimina o custo de SaaS. A documentação é excelente e features como fuzzy search e sinônimos funcionam bem sem configuração extensa. Para equipes que querem o conforto do Algolia sem o custo, Typesense é a escolha natural.
Autocomplete, Fuzzy Search e Sinônimos
Três features que transformam a experiência de busca:
Autocomplete sugere termos enquanto o usuário digita. A implementação eficiente usa um índice separado de sugestões (baseado em histórico de buscas convertidas, não apenas no catálogo) com debounce de 200-300ms para evitar requisições excessivas. O autocomplete deve priorizar categorias e marcas, não apenas produtos individuais.
// Busca com Typesense — fuzzy search + filtros + ranking
const resultado = await typesense.collections("produtos").documents().search({
q: termoBusca,
query_by: "nome,descricao,marca,categoria,tags",
query_by_weights: "4,2,3,2,1", // Peso maior para nome e marca
num_typos: 2, // Tolerância a 2 erros de digitação
typo_tokens_threshold: 1,
filter_by: `estoque:>0 && ativo:true`, // Apenas produtos disponíveis
sort_by: "_text_match:desc,vendas_30d:desc,margem:desc",
facet_by: "categoria,marca,preco_faixa",
per_page: 24,
highlight_full_fields: "nome,marca",
});
Fuzzy search trata erros de digitação usando distância de edição (algoritmo de Levenshtein ou similar). Um fuzzy search com tolerância de 1-2 caracteres resolve "camiseta" vs "camisetta", "fone" vs "fones", "iphone" vs "aiphone". A calibração importa: tolerância alta demais retorna resultados irrelevantes.
Sinônimos exigem curadoria manual mas têm alto impacto. "Smartphone" e "celular", "notebook" e "laptop", "tênis" e "tenis" (acento), "geladeira" e "refrigerador" são sinônimos que usuários alternam e que buscas literais não resolvem. Muitos motores permitem sinônimos bidirecionais e unidirecionais — "smartphone → celular" pode ser unidirecional se você indexa os produtos com "celular" mas os usuários digitam "smartphone".
Ranking por Relevância, Vendas e Margem
Ordenar resultados por relevância textual pura é insuficiente. Um produto que aparece primeiro nos resultados mas tem zero vendas nos últimos 30 dias provavelmente não é o que o cliente quer. O ranking em e-commerce profissional combina múltiplos sinais:
Relevância textual: O motor de busca calcula um score de similaridade entre o termo buscado e os campos indexados. Este é o ponto de partida.
Sinais de popularidade: Vendas nos últimos 7/30/90 dias, número de visualizações, taxa de clique nos resultados de busca (CTR) e taxa de conversão da busca para o produto. Produtos populares geralmente são os mais relevantes para o usuário.
Sinais de negócio: Margem de contribuição, produtos patrocinados, produtos em promoção ativa, produtos com estoque alto (evitar frustração de "esgotado" logo após clicar). O negócio pode querer ranquear produtos com maior margem acima de alternativas igualmente relevantes.
Sinais de disponibilidade: Produtos sem estoque devem aparecer por último ou fora dos resultados principais. Mostrar produtos indisponíveis no topo destrói a experiência.
A combinação desses sinais forma um score composto. Ferramentas como Elasticsearch permitem scripted queries que calculam scores customizados combinando todos esses fatores. Algolia e Typesense têm sort_by com múltiplos campos, mas menos flexibilidade para scoring complexo.
Um padrão eficaz é criar um campo ranking_score calculado offline (atualizado diariamente ou em tempo real via evento de venda) e usar esse campo no sort:
ranking_score = relevancia_texto * 0.4
+ normalizar(vendas_30d) * 0.3
+ normalizar(margem) * 0.2
+ boost_promocao * 0.1
Conclusão com CTA
Busca relevante não é um luxo para grandes e-commerces — é uma necessidade para qualquer loja com mais de 200 produtos. A diferença entre SQL LIKE e um motor dedicado se traduz diretamente em conversão: usuários que encontram o que procuram compram; usuários que não encontram vão embora.
A implementação correta — escolha do motor adequado ao perfil da operação, configuração de analisadores de texto para português, sinônimos curados, ranking com sinais de negócio — exige experiência para evitar meses de trial and error. Na SystemForge, implementamos soluções de busca para e-commerce do zero, incluindo integração com Elasticsearch, Algolia e Typesense, com dashboards de analytics para acompanhar termos sem resultado e oportunidades de curadoria. Fale com nossa equipe.
Quer criar seu E-commerce?
Desenvolvemos lojas virtuais completas, do catálogo ao checkout.
Saiba mais →Precisa de ajuda?

