Como o catálogo é indexado
Os motores por loja, língua e moeda, o que entra em cada documento, e as vias por onde o índice se mantém em dia, no PrestaShop e na Shopify.
A pesquisa não corre sobre a base de dados da loja. Corre sobre um índice nosso, que é uma cópia do catálogo preparada para responder em milissegundos. Este guia é sobre como essa cópia se faz e como se mantém fiel, seja a loja PrestaShop ou Shopify.
Um motor por loja, língua e moeda
No handshake, o módulo PrestaShop diz-nos que lojas tem, em que línguas e com que moedas; numa loja Shopify, a aplicação lê as línguas publicadas e a moeda principal no momento em que é instalada. Para cada combinação nasce um motor de pesquisa, e é isso que vê em Pesquisa → Motores de pesquisa: a loja a que pertence, o que indexa, a língua e a moeda, quantos documentos tem e quando foi a última indexação.
A separação não é um detalhe de arrumação. O nome de um produto em francês e em português são textos diferentes, e uma pesquisa por "chaussures" não deve encontrar resultados pelo texto português. Os preços seguem a mesma lógica: cada motor guarda os da sua moeda.
Uma loja multi-idioma tem, portanto, mais do que um motor, e quase tudo o que se configura por motor (pesos, sinónimos, filtros) se configura uma vez por cada. Na Shopify, cada língua publicada recebe as traduções de produto que existirem na loja, e o original onde não existirem: um produto sem tradução nunca desaparece do motor dessa língua.
O que entra num documento
De cada produto guardamos o que serve para o encontrar e para o mostrar: referência, EAN e MPN, nome, marca, categorias, características e atributos, descrições, preço, imagem, estado de stock e o URL na loja. As combinações e variantes entram também, cada uma com a referência e o código de barras dela: o EAN lido da caixa de um tamanho encontra o produto, e a pesquisa consegue pôr no carrinho o tamanho ou a cor certa.
No PrestaShop, três opções do módulo mudam o que lá chega:
- Preços com IVA: decide se o preço indexado é com ou sem imposto. Tem de ser igual ao que a loja mostra, ou os resultados dizem um número e a ficha diz outro.
- Tamanho de imagem: qual das imagens do PrestaShop viaja para o índice. A dos cards da pesquisa, não a de detalhe.
- Produtos sem stock: indexar na mesma, despromover nos resultados, ou esconder. Um produto que a loja deixe encomendar mesmo em rutura conta como tendo stock nas três opções: não é escondido nem despromovido, e mostra nos resultados o prazo de entrega escrito na ficha.
E três sinais opcionais, que a loja partilha se quiser, e que não servem para pesquisar mas para ordenar e medir: o volume de vendas (alimenta a ordenação "mais vendidos" e a deteção de best-sellers invisíveis), o preço de custo (dá margens nas analytics) e as encomendas (ligam a pesquisa à receita). Na Shopify, as encomendas chegam pela própria plataforma, e só entram as que a pesquisa ou o assistente tocaram.
Atenção Ligar ou desligar a partilha de vendas ou de custo pede uma reindexação completa para o índice refletir a mudança. O módulo avisa quando isso acontece.
As vias por onde se mantém em dia
Depois da primeira indexação completa, o dia-a-dia trata-se sozinho, e a forma exata depende da plataforma.
Numa loja PrestaShop
- Tempo real. Guardar, apagar ou mudar o stock de um produto empurra a alteração na hora, pelos hooks do módulo. É por aqui que passa a esmagadora maioria das atualizações, e é o que faz o preço e o stock na pesquisa serem os mesmos da loja.
- Sincronização periódica. Em ciclos regulares, a plataforma pede à loja que reveja o catálogo, e é isto que apanha o que o tempo real não viu (uma importação por CSV, uma alteração feita direto na base de dados). Para funcionar, o endereço
https://a-sua-loja/module/buskara/synctem de estar acessível do exterior. - Manual. O botão Reindexar tudo, no painel ou no módulo, ou o comando de linha. Ver reindexar o catálogo.
Quando desconfiar da via 2 Firewalls, autenticação básica em ambientes de pré-produção e regras de "só o meu IP" bloqueiam a sincronização periódica sem darem erro visível no back-office. O sintoma é o índice ficar dias sem mexer enquanto o tempo real vai funcionando.
Numa loja Shopify
- Tempo real, por webhooks. A própria Shopify avisa o Buskara sempre que um produto é criado, alterado ou apagado, ou que o stock mexe, e a alteração chega ao índice segundos depois. Não há nada para configurar: as subscrições fazem-se quando a aplicação é instalada.
- Rede periódica. Em ciclos regulares, o Buskara confere na Shopify o que mudou desde a última passagem, para nada ficar para trás se um webhook se perder pelo caminho. Não depende de nenhum endereço da loja estar acessível.
- Manual. O botão Reindexar tudo na ficha da loja, no painel. Ver reindexar o catálogo.
A instalação e o dia-a-dia estão descritos passo a passo em ligar uma loja Shopify.
O conteúdo, de hora a hora
O blog e as páginas da loja não têm hook de tempo real, e não faz sentido reindexar o catálogo inteiro por causa de um artigo. Numa loja PrestaShop com o conteúdo ligado, o Buskara faz uma passagem própria de hora a hora, só sobre os artigos e as páginas, reconstruindo o motor de conteúdo por inteiro; é a única maneira de apanhar também o que foi despublicado. Esta passagem é sempre gratuita, seja quem for a pedi-la.
Um artigo publicado aparece, portanto, na pesquisa dentro de uma hora, sem que ninguém carregue em nada.
O que a indexação custa
A rotina não custa nada: o tempo real, a sincronização periódica, a primeira sincronização de uma loja Shopify e a passagem horária do conteúdo nunca são cobrados. Não encostam no limite do plano nem geram excedente. Manter o catálogo em dia não deve ser uma decisão de orçamento.
O que tem preço é forçar: carregar em Reindexar tudo custa 1 bToken por cada 1.000 documentos enviados, e o aviso com a conta aparece antes de confirmar. Está explicado em reindexar o catálogo; o que se gasta aparece no gráfico de uso, na linha reindex. Ver o que conta como pedido.
Um segundo motor, para o conteúdo
O blog e as páginas da loja podem ser indexados à parte, num motor próprio, e aparecer nos resultados sem roubarem lugar aos produtos. É opcional e liga-se no módulo; está explicado em artigos e conteúdo da loja.