API de Busca
Endpoints para busca full-text com Sonic.
document.list (com busca)
A busca é integrada ao endpoint document.list.
Input com Busca
typescript
{
search: string; // Termo de busca
// ... outros filtros
}Funcionamento
- Sonic busca termo em todos os campos indexados
- Retorna top 100 IDs mais relevantes
- Prisma aplica filtros adicionais
- Paginação aplicada ao resultado final
Exemplo
typescript
const { data } = await trpc.document.list.useQuery({
search: "relatório anual 2024",
accessLevel: "Público",
page: 1,
limit: 10
});document.getSearchSuggestions
Sugestões de autocompletar baseadas no índice.
Input
typescript
{
word: string; // Mínimo 1 caractere
limit?: number; // Default: 5
}Response
typescript
string[] // Array de sugestõesExemplo
typescript
const { data: suggestions } = trpc.document.getSearchSuggestions.useQuery({
word: "doc",
limit: 5
});
// Resultado: ["documento", "documentação", "documental", "documentos", "doc"]document.reindexSearch
Reindexação manual de todos os documentos.
Autenticação: Admin/Super apenas
Response
typescript
{
success: true;
message: "Reindexação concluída com sucesso"
}Processo
- Flush da collection Sonic
- Busca todos os documentos ativos
- Processa em lotes de 50
- Indexa cada documento
- Retorna sucesso
Campos Indexados
O sistema indexa os seguintes campos:
- title
- digitalId
- documentNumber
- author
- description
- keywords
- documentType.name
- linkedBody.name
- notes
- provenance
- internalOrganization
- parliamentarians
Busca Fuzzy
Sonic aplica automaticamente:
- Correção de erros de digitação
- Remoção de acentos
- Stemming (português)
- Busca parcial
Exemplos
Busca: "relatorio" → Encontra: "Relatório"
Busca: "momorando" → Encontra: "Memorando"
Busca: "anual 2024" → Encontra: "Anual de 2024"Performance
- Busca: < 1ms (maioria das consultas)
- Limite de resultados: 100 documentos
- Cache: Consultas recentes em memória
- Fallback: Busca Prisma se Sonic indisponível