4 de Outubro de 2025
Sistema de busca sem resposta decorada
Como explicar indexação, consulta e relevância sem transformar busca em aula de ferramenta.
Andrews Ribeiro
Founder & Engineer
4 min Intermediario Sistemas
Trilha
Trilha de system design para entrevistas
Etapa 19 / 19
O problema
Quando alguém pergunta como desenhar um sistema de busca, muita resposta morre em:
Eu usaria Elasticsearch.
Isso não responde quase nada.
Busca de verdade obriga você a explicar:
- como o documento entra
- como a query encontra resultado
- como o sistema decide a ordem
- e como tudo isso continua funcionando quando o volume cresce
E esse cenário é bom justamente por isso: ele mostra se você entende fluxo ou só nome de produto.
Modelo mental
Busca parece uma coisa só para o usuário.
Mas por dentro ela mistura pelo menos três perguntas diferentes:
- como o documento vira algo pesquisável
- como a query encontra candidatos rápido
- como o sistema decide a ordem dos resultados
Se essas três partes estiverem claras, a conversa já fica muito melhor.
O índice invertido entra para resolver a segunda parte.
Em português simples:
- em vez de abrir documento por documento
- o sistema guarda uma estrutura que diz em quais documentos cada termo aparece
Sem isso, a busca degrada rápido demais.
Quebrando o problema
Primeiro caminho: como o documento entra
Quase toda busca boa começa com uma fonte de verdade clara.
O produto salva o documento em algum lugar principal.
Depois disso, um pipeline atualiza o índice.
O fluxo mais comum é:
- o sistema salva ou atualiza o documento
- uma fila ou evento sinaliza a mudança
- um indexador transforma isso em estrutura de busca
Essa separação importa porque indexar pode ser caro e sujeito a reprocessamento.
Se você tentar fazer tudo dentro do request principal, a escrita fica refém da indexação.
Também vale assumir desde cedo que documento e índice podem ficar um tempo desencontrados.
Busca quase sempre trabalha com consistência eventual, não com sincronia perfeita.
Segundo caminho: como a query encontra candidatos
Quando o usuário digita algo, o sistema não deveria sair abrindo documento por documento.
Ele passa por alguns passos simples:
- normalização
- tokenização
- talvez correção simples ou expansão de termo
Depois disso, consulta o índice e pega um conjunto de candidatos.
Esse ponto é importante:
- encontrar candidatos e ordenar resultado não são a mesma etapa
- muita resposta ruim mistura as duas coisas
Terceiro caminho: como o sistema decide a ordem
Relevância não é só texto igual.
Uma busca útil costuma misturar:
- correspondencia dos termos
- peso relativo do termo
- tamanho do documento
- frescor
- popularidade
- contexto do produto
Por isso busca não é só problema de texto. Também é problema de produto.
Isso ajuda muito em entrevista porque mostra que você não está pensando só no motor, mas no resultado que o usuário vai ver.
Onde entra escala de verdade
Só depois que o básico ficou claro vale entrar em shard, reindexação e volume grande.
Quando o indice cresce muito, ele pode ser dividido.
Isso ajuda armazenamento e distribuição.
Mas cobra custo:
- consulta mais espalhada
- ranking global mais caro
- operação de rebalanceamento mais sensivel
Então shard não deveria ser o primeiro assunto da explicação.
Evolução e reindexação
Busca muda bastante ao longo do tempo.
Você pode mudar:
- tokenização
- ranking
- estrutura do índice
- pipeline de indexação
Quando isso acontece, o caminho saudavel costuma ser:
- criar índice novo
- preencher em paralelo
- trocar a leitura quando estiver pronto
Isso mostra noção operacional sem entrar em especialização desnecessária.
Exemplo simples
Imagina uma busca de e-commerce.
O usuário digita:
notebook gamer
Uma resposta boa em entrevista poderia soar assim:
“Eu separaria claramente escrita de documento e atualização de índice. O sistema principal continua sendo dono do produto. Quando o produto muda, publico um evento e um indexador atualiza o índice de forma assíncrona. Na consulta, a query passa por normalização, consulta o índice invertido, e os candidatos são ordenados por relevância. Se o volume crescer muito, eu particiono o índice, aceitando o custo extra de agregação. Se eu precisar mudar o modelo de indexação, faço reindexação em paralelo antes de trocar a leitura.”
Essa resposta já mostra:
- separação de fluxos
- papel do índice invertido
- noção de relevância
- preocupação com evolução
Erros comuns
- Responder só com nome de ferramenta.
- Ignorar o caminho de indexação.
- Fingir que relevância é só contar palavra.
- Entrar em shard cedo demais.
- Esquecer que índice também precisa evoluir.
Como um senior pensa
Quem tem mais bagagem costuma fazer estas perguntas cedo:
Como esse documento entra no índice?
Como essa query encontra resultado relevante rápido?
Quando essas duas respostas estão boas, o resto da arquitetura fica muito menos nebuloso.
O que o entrevistador quer ver
Nesse cenário, o entrevistador quer ver se você:
- entende índice invertido sem misticismo
- separa indexação de consulta
- trata relevância como parte do produto
- reconhece os custos de shard e evolução
- responde com clareza em vez de catálogo de tecnologia
Busca boa não começa com o nome da ferramenta. Começa com clareza sobre como o sistema indexa, consulta e ordena resultado.
A resposta fica forte quando você mostra fluxo, custo e evolução, não quando tenta parecer especialista em ferramenta.
Resumo rápido
O que vale manter na cabeça
- Busca tem dois caminhos principais: indexar e consultar.
- Índice invertido existe para evitar varrer documento por documento.
- Relevância faz parte do design, não é detalhe cosmético.
- Atualização de índice costuma ser assíncrona e eventual.
- Ferramenta ajuda muito, mas não substitui clareza de fluxo.
Checklist de pratica
Use isto ao responder
- Consigo explicar índice invertido em linguagem simples?
- Sei separar entrada de documento, consulta e ranking?
- Consigo dizer o que afeta relevância além de texto igual?
- Sei explicar como evoluir o índice sem parar a busca?
Você concluiu este artigo
Parte da trilha: Trilha de system design para entrevistas (19/19)
Próximo passo
Cenários de API em Escala Próximo passo →Compartilhar esta página
Copie o link manualmente no campo abaixo.