Filas de indexação do Google Cloud Search

O SDK do Connector e a API Cloud Search oferecem suporte à criação de filas de indexação do Cloud Search. Use essas filas para:

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

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

Status e prioridade

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

  • ERROR: o item encontrou um erro assíncrono e precisa ser reindexado.
  • 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 maior prioridade é para aqueles 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. Essas 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 para uma fila.
    • Se o conector incluir um push type ou contentHash, o Cloud Search vai determinar o status.
    • 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 de API de índice.
  4. O conector usa items.index para indexar os itens. Um item entra no estado ACCEPTED após o processamento bem-sucedido.

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".
    • 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 os papéis das duas filas.

Operações de fila (SDK do Connector)

Use o pushItems builder para enviar itens. O SDK extrai automaticamente itens da fila em ordem de prioridade usando o Repository class's getDoc método.

Operações de fila (API REST)

Você também pode 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. O envio de um novo ID 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. O uso de 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. O Cloud Search compara esses valores aos armazenados. Se eles não corresponderem, a entrada 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 tenha a reserva cancelada usando Items.push.