Pular para o conteudo principal

Sistema de busca sem resposta decorada

Como explicar indexação, consulta e relevância sem transformar busca em aula de ferramenta.

Andrews Ribeiro

Andrews Ribeiro

Founder & Engineer

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:

  1. como o documento vira algo pesquisável
  2. como a query encontra candidatos rápido
  3. 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 é:

  1. o sistema salva ou atualiza o documento
  2. uma fila ou evento sinaliza a mudança
  3. 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

Checklist de pratica

Use isto ao responder

Você concluiu este artigo

Parte da trilha: Trilha de system design para entrevistas (19/19)

Próximo artigo Delegar com contexto claro Artigo anterior Design de Sistema de Upload e Processamento de Arquivos

Continue explorando

Artigos relacionados