Case: search system (Google-like)
- ⬜⚡ Case: distributed cache (Redis/Memcached)(System Design Interview Prep)
Recomendamos completar os pré-requisitos antes de seguir, mas nada te impede de continuar.
Por que busca não é "um LIKE mais rápido"
A diferença entre filtrar e buscar é que a busca precisa ordenar por relevância. Filtrar responde "quais documentos contêm esta palavra"; buscar responde "quais são os mais úteis para esta pessoa, nesta ordem" — e a segunda pergunta não tem resposta objetiva.
O índice invertido resolve a primeira parte. Toda a dificuldade restante está na segunda.
# Índice invertido: a inversão que dá nome à estrutura
Documento → palavras (como o dado nasce)
doc1: "cache distribuído"
doc2: "cache local"
palavra → documentos (como o índice guarda)
"cache" → [doc1, doc2]
"distribuído" → [doc1]
"local" → [doc2]
Buscar "cache distribuído" vira interseção de duas listas curtas,
em vez de varrer todos os documentos. É por isso que busca escala:
o custo acompanha a raridade do termo, não o tamanho do acervo.A consequência prática da inversão
Termo raro é barato — a lista é curta. Termo comum é caro, e é por isso que palavras muito frequentes recebem tratamento especial. A intuição de "quanto mais específica a busca, mais lenta" é exatamente invertida.
As três etapas, e onde cada uma erra
O defeito mais comum em busca caseira
Normalizar o texto de um jeito ao indexar e de outro ao consultar. O sistema não dá erro — simplesmente não encontra, e a investigação vai para o lugar errado porque "o documento está lá". Usar exatamente o mesmo caminho de análise nos dois lados é regra, não boa prática.
Por que duas fases de ordenação
Aplicar o modelo caro a todos os candidatos seria correto e inviável: milhares de documentos vezes um modelo com dezenas de sinais não cabe em cem milissegundos. A saída é a mesma de qualquer sistema com orçamento apertado: barato em cima de muitos, caro em cima de poucos.
| Fase | Quantos documentos | Que sinais usa | Custo |
|---|---|---|---|
| Recuperação | Milhões → milhares | Só o texto: casamento de termos e raridade | Microssegundos por documento |
| Ordenação inicial | Milhares → centenas | Pontuação estatística sobre o texto | Barato, sem estado externo |
| Reordenação | Centenas → dezenas | Comportamento, personalização, recência, qualidade da fonte | Caro — e por isso só aqui |
📋 Vale colocar um modelo aprendido na ordenação?
A pontuação clássica é forte, não precisa de dado de treino e é depurável — dá para explicar por que um documento ficou à frente. Um modelo aprendido exige registro de cliques, avaliação e uma equipe para mantê-lo, e sem uma linha de base medida ninguém sabe se ele melhorou algo.
Alt: Modelo aprendido desde o início — Sem dado de comportamento acumulado ele não tem o que aprender, e sem linha de base não há como provar ganho
Alt: Só ordenação estatística, para sempre — Deixa na mesa o sinal mais forte que existe — o que as pessoas realmente clicam
A resposta que mostra maturidade
"Começo com pontuação estatística e registro cliques desde o primeiro dia. O registro é o que torna possível avaliar depois — sem ele, quando eu quiser um modelo aprendido, vou ter de esperar meses para acumular dado."
Qual estrutura de dados sustenta a busca por texto em escala?
O que quase todo candidato esquece
- Como o índice é atualizado. Documento novo aparece na busca em quanto tempo? A resposta define se a indexação é em lote ou contínua, e isso muda a arquitetura inteira.
- Sugestão enquanto se digita é outro sistema. Ele responde em dezenas de milissegundos a cada tecla, e normalmente usa uma estrutura própria — não o mesmo índice da busca.
- Como se mede se a busca é boa. Sem avaliação, "melhorei a relevância" é opinião. Métricas de posição sobre um conjunto de consultas com respostas conhecidas é o mínimo.
- Busca vazia e busca sem resultado são telas de produto, não erros. O que aparece ali costuma valer mais para o negócio que o décimo resultado de uma busca bem-sucedida.
A pergunta de acompanhamento mais provável
"E se o acervo não couber numa máquina?" A resposta é particionar o índice: cada nó guarda parte dos documentos, a consulta vai a todos e um coordenador mescla os resultados. É o mesmo desenho de duas fases da trilha de busca — e citá-lo mostra que você conhece a implementação real, não só o conceito.
Perguntas frequentes
❓ Como funciona um índice invertido?
❓ Como ordenar resultados?
❓ Como escalar um sistema de busca?
Fixando
Por que a etapa de recuperação é separada da de ordenação?
O que torna a indexação quase em tempo real desafiadora?
Terminou de ler?
Marcar como concluído registra o XP, mantém sua sequência e coloca 3 cartas deste módulo na fila de revisão espaçada.
Próximos passos sugeridos
Temas deste módulo
Discussão
Carregando comentários…