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).
- O conector de conteúdo usa
items.pushpara enviar metadados e hashes a uma fila.- Se o conector incluir um push
typeoucontentHash, 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.
- Se o conector incluir um push
- O conector usa
items.pollpara determinar quais itens indexar. O Cloud Search retorna itens em ordem de prioridade. - O conector recupera itens do repositório e cria solicitações da API de indexação.
- O conector usa
items.indexpara indexar os itens. Um item entra no estadoACCEPTEDapó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.
- Na travessia inicial, o conector envia itens para a "fila A" como
NEW_ITEM. Cada item recebe o rótulo "A". - O conector pesquisa a fila A e indexa os itens.
- 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.
- Os itens desconhecidos recebem o rótulo "B" e o status
- O conector pesquisa a fila B e indexa os itens.
- Por fim, o conector chama
deleteQueueItemsna fila A. Isso exclui todos os itens indexados anteriormente que ainda têm o rótulo "A". - 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)
- Para enviar: use
Items.push. - Para fazer uma pesquisa, use
Items.poll.
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.