Filas de indexação do Google Cloud Search

O SDK do conector e a API Cloud Search permitem criar filas de indexação do Cloud Search. Use essas filas para:

  • Manter o estado por documento (status, hashes etc.) para manter o índice em sincronia.
  • Manter uma lista de itens a serem indexados, conforme detectados durante a travessia.
  • Priorizar os itens com base no status deles.
  • Manter informações de estado, como checkpoints e tokens de mudança.

Uma fila é um rótulo atribuído a um item indexado (por exemplo, "default").

Status e prioridade

A prioridade de um documento depende do código ItemStatus dele. Os códigos possíveis, em ordem de prioridade (da mais alta para a mais baixa), são:

  • ERROR: o item encontrou um erro assíncrono e precisa ser indexado novamente.
  • MODIFIED: o item foi indexado anteriormente, mas mudou no repositório.
  • NEW_ITEM: o item ainda não foi indexado.
  • ACCEPTED: o item foi indexado anteriormente e não mudou.

Para itens com o mesmo status, a prioridade mais alta é dada aos que estão na fila há mais tempo.

Indexar um item novo ou alterado

A Figura 1 mostra as etapas para indexar um item novo ou alterado usando uma fila de indexação. Estas etapas refletem chamadas da API REST. Para equivalentes do SDK, consulte Operações de fila (SDK do Connector).

Visão geral da indexação do Cloud Search
Figura 1. Etapas de indexação para adicionar ou atualizar um item
  1. O conector de conteúdo usa items.push para enviar metadados e hashes a uma fila.
    • Se o conector incluir um push type ou contentHash, o Cloud Search vai determinar o status.
    • Os itens desconhecidos recebem o status NEW_ITEM.
    • Os itens atuais com hashes correspondentes permanecem ACCEPTED.
    • Os itens atuais com hashes diferentes se tornam MODIFIED.
  2. O conector usa items.poll para determinar quais itens indexar. O Cloud Search retorna itens em ordem de prioridade.
  3. O conector recupera itens do repositório e cria solicitações da API de indexação.
  4. O conector usa items.index para indexar os itens. Um item entra no estado ACCEPTED após o processamento ser concluído.

Excluir um item

A estratégia de travessia completa usa duas filas para indexar itens e detectar exclusões. A Figura 2 mostra a segunda travessia nessa estratégia.

Visão geral da indexação do Cloud Search
Figura 2. Excluir itens
  1. Na travessia inicial, o conector envia itens para a "fila A" como NEW_ITEM. Cada item recebe o rótulo "A".
  2. O conector pesquisa a fila A e indexa os itens.
  3. Na segunda travessia completa, o conector envia itens para a "fila B".
    • Os itens desconhecidos recebem o rótulo "B" e o status NEW_ITEM.
    • Os itens atuais com hashes correspondentes mudam o rótulo para "B" e permanecem ACCEPTED.
    • Os itens atuais com hashes diferentes mudam o rótulo para "B" e se tornam MODIFIED.
  4. O conector pesquisa a fila B e indexa os itens.
  5. Por fim, o conector chama deleteQueueItems na fila A. Isso exclui todos os itens indexados anteriormente que ainda têm o rótulo "A".
  6. As travessias subsequentes trocam as funções das duas filas.

Operações de fila (SDK do Connector)

Use o criador de pushItems para enviar itens. O SDK extrai automaticamente itens da fila em ordem de prioridade usando o método getDoc da classe Repository.

Operações de fila (API REST)

Também é possível usar Items.index para enviar itens durante a indexação. Esses itens recebem o status ACCEPTED automaticamente.

Items.push

Esse método adiciona IDs à fila. O type determina o resultado. Enviar um ID novo adiciona uma entrada com o status NEW_ITEM. O payload opcional é retornado durante a pesquisa.

Os itens pesquisados são reservados e não podem ser retornados por outras chamadas de pesquisa. Usar Items.push com type definido como NOT_MODIFIED, REPOSITORY_ERROR ou REQUEUE cancela a reserva das entradas.

Items.push com hashes

Especifique metadados ou hashes de conteúdo na solicitação de envio por push. O Cloud Search compara esses valores com os armazenados. Se eles não corresponderem, a entrada vai se tornar MODIFIED. IDs incompatíveis que não existem se tornam NEW_ITEM.

Items.poll

Esse método recupera entradas de alta prioridade. Cada entrada retornada é reservada até que expire, seja reindexada ou seja liberada usando Items.push.