Pular para conteúdo

NORMALIZE_UNICODE - Normalização Unicode (Remove Acentos)

O que é esta operação?

A operação NORMALIZE_UNICODE decompõe caracteres acentuados e remove diacríticos, convertendo "José" para "Jose", "São" para "Sao", etc.

Por que esta operação existe?

Acentos podem causar problemas em matching e buscas. Esta operação existe para:

  1. Busca Tolerante: Permitir que "jose" encontre "José" em buscas
  2. Normalização de Nomes: Padronizar nomes para comparação (Silva = Silva)
  3. Compatibilidade ASCII: Remover acentos para sistemas que só suportam ASCII
  4. URLs Amigáveis: Criar slugs sem caracteres especiais (São Paulo → Sao-Paulo)

Como funciona internamente?

Código interno (content-cleaner-executor.service.ts:275-278):

// Normalize unicode (NFD - decompose accents)
if (config.normalizeUnicode === true) {
  cleaned = cleaned.normalize('NFD').replace(/[\u0300-\u036f]/g, '');
}

Parâmetros

Campo Tipo Obrigatório Descrição
inputVariable string Sim Variável contendo o texto
normalizeUnicode boolean Não Normaliza e remove acentos (padrão: false)
outputVariable string Não Variável para resultado

Exemplo: Normalização para Busca

{
  "name": "Normalizar para Busca",
  "nodes": [
    {
      "id": "start_1",
      "type": "start",
      "position": { "x": 100, "y": 100 },
      "data": { "label": "Início" }
    },
    {
      "id": "input_1",
      "type": "input",
      "position": { "x": 300, "y": 100 },
      "data": {
        "label": "Digite Nome",
        "parameters": {
          "message": "Digite o nome para buscar:",
          "variableName": "search_name"
        }
      }
    },
    {
      "id": "cleaner_1",
      "type": "content_cleaner",
      "position": { "x": 500, "y": 100 },
      "data": {
        "label": "Normalizar",
        "parameters": {
          "inputVariable": "search_name",
          "normalizeUnicode": true,
          "toLowerCase": true,
          "trimWhitespace": true,
          "outputVariable": "normalized_search"
        }
      }
    },
    {
      "id": "message_1",
      "type": "message",
      "position": { "x": 700, "y": 100 },
      "data": {
        "label": "Buscar",
        "parameters": {
          "message": "🔍 Buscando: {{normalized_search}}\n\n(Original: {{search_name}})"
        }
      }
    },
    {
      "id": "end_1",
      "type": "end",
      "position": { "x": 900, "y": 100 },
      "data": { "label": "Fim" }
    }
  ],
  "edges": [
    { "source": "start_1", "target": "input_1" },
    { "source": "input_1", "target": "cleaner_1" },
    { "source": "cleaner_1", "target": "message_1" },
    { "source": "message_1", "target": "end_1" }
  ]
}

Saída:

Digite o nome para buscar:
> José Silva
🔍 Buscando: jose silva

(Original: José Silva)

Boas Práticas

SIM: Buscas case-insensitive, geração de slugs, normalização de nomes para matching ❌ NÃO: Documentos formais onde acentuação correta é importante

Dicas

💡 Dica 1: Usa normalização NFD (Canonical Decomposition) seguida de remoção de diacríticos 💡 Dica 2: Combine com toLowerCase para normalização completa de buscas 💡 Dica 3: Útil para criar índices de busca tolerantes a acentos

Próximo Node

TO_LOWERCASE - Converte para minúsculas → REMOVE_SPECIAL_CHARS - Remove caracteres especiais