Skip to content

Indexação e Motor de Busca (Meilisearch)

O projeto utiliza o Laravel Scout em conjunto com o Meilisearch para fornecer uma busca ultrarrápida, baseada em texto e vetores semânticos. Toda a lógica de indexação está centralizada no model WakeProduct.

Regras de Elegibilidade (O Porteiro)

Nem todos os produtos salvos no banco de dados vão para o motor de busca. O método shouldBeSearchable() atua como um filtro rigoroso. Um produto só é indexado se atender a todas as seguintes condições simultaneamente:

  1. URL Válida: O campo de URL não pode estar vazio e deve obrigatoriamente conter o segmento /produto/.
  2. Visibilidade na Wake: O JSON bruto da API (raw_data) deve confirmar que a página renderiza ou é válida, validando se exibirSite ou valido são true.

Estrutura do Documento Indexado

Quando um produto passa na elegibilidade, o método toSearchableArray() o converte em um documento otimizado para o Meilisearch.

1. Limpeza e Otimização de Atributos

  • Ficha Técnica: O sistema faz um "strip" de tags HTML da descrição original e agrupa as informações adicionais da Wake em uma string contínua (informacoes_tecnicas_full), facilitando o match de palavras-chave na busca.
  • Cálculo de Desconto: O sistema calcula dinamicamente a tag de desconto em tempo de indexação, gerando o percentual_desconto sempre que o precoDe for maior que o preço atual.
  • Cache de Voltagem: Para evitar Full Table Scans e economizar RAM do servidor, o sistema possui uma rotina que vai ao banco apenas uma vez para montar um cache de voltagens disponíveis em memória estática ($voltagemCache), anexando o array final ao campo selecione a voltagem.

2. Integração com Inteligência Artificial

O documento enviado ao Meilisearch já embute o processamento assíncrono realizado pela IA local:

  • Tags Semânticas: O campo tags_ia inclui intenções de uso geradas pelo motor Ollama/LLaVA.
  • Busca Híbrida/Vetorial: O índice contempla o array _vectors['default'] contendo o vector_embedding do produto, preparando o terreno para buscas semânticas nativas do motor.