Configuração de Pesquisa
A documentação utiliza @easyops-cn/docusaurus-search-local para busca local (client-side).
Por que busca local
- Roda 100% no browser — sem dependência de serviço externo
- Funciona com docs privadas atrás de Cloudflare Access — Algolia DocSearch precisaria do crawler bater no site público pra indexar, o que não é possível com Access ligado
- Sem custo — não tem mensalidade nem cota
- Suficiente pra docs pequenas — performance ok até centenas de páginas
Como funciona
O plugin gera um índice estático no momento do build (via docusaurus build). O índice é servido como arquivo JSON e a busca acontece no browser. Lunr.js é o motor por baixo.
Configuração atual
No docusaurus.config.ts:
plugins: [
[
'@easyops-cn/docusaurus-search-local',
{
hashed: true,
language: ['pt', 'en'],
docsRouteBasePath: '/',
indexBlog: false,
highlightSearchTermsOnTargetPage: true,
explicitSearchResultPath: true,
},
],
],
hashed: true— hash no nome do arquivo de índice, cache-friendlylanguage: ['pt', 'en']— stemming PT-BR + ENdocsRouteBasePath: '/'— bate comrouteBasePathdo presetindexBlog: false— não tem bloghighlightSearchTermsOnTargetPage: true— destaca o termo na página de destino
Quando indexa
A indexação acontece no build. Em npm run start (dev mode) a busca não funciona — só em npm run build + npm run serve, ou em produção depois do deploy.
Quando trocar por algo maior
Se a doc crescer pra dezenas de seções e/ou o time pedir "busca por significado, não palavra" (ex: pesquisar "ambiente de testes" e achar página sobre "staging"), avalia:
- Inkeep / Kapa.ai / Mendable — RAG sobre as docs com LLM
- Trieve — vector search self-hosted, mais barato
- Algolia Search (não DocSearch) — pago, mas funciona com sites privados se você indexar via API