Files d'attente d'indexation Google Cloud Search

Le SDK Connector et l'API Cloud Search permettent de créer des files d'attente d'indexation Cloud Search. Utilisez ces files d'attente pour :

  • Déterminer l'état de chaque document (état, hachages, etc.) pour synchroniser votre index
  • Établir la liste des éléments à indexer selon l'analyse effectuée durant le processus de balayage
  • Établir l'ordre de priorité des éléments en fonction de leur état
  • Déterminer des informations d'état telles que les points de contrôle et les jetons de modification.

Une file d'attente est un libellé attribué à un élément indexé (par exemple, "default").

État et priorité

La priorité d'un document dépend de son code ItemStatus. Voici les codes possibles, par ordre de priorité (du plus élevé au plus faible) :

  • ERROR : l'élément a rencontré une erreur asynchrone et doit être réindexé.
  • MODIFIED : l'élément a déjà été indexé, mais a été modifié dans le dépôt.
  • NEW_ITEM : l'article n'a pas encore été indexé.
  • ACCEPTED : l'élément a déjà été indexé et n'a pas été modifié.

Pour les éléments ayant le même état, la priorité est donnée à ceux qui figurent dans la file d'attente depuis le plus longtemps.

Indexer un élément nouveau ou modifié

La figure 1 montre les étapes à suivre pour indexer un élément nouveau ou modifié à l'aide d'une file d'attente d'indexation. Ces étapes reflètent les appels d'API REST. Pour les équivalents SDK, consultez Opérations de file d'attente (SDK Connector).

Présentation de l'indexation Cloud Search
Figure 1. Étapes d'indexation pour ajouter ou modifier un élément
  1. Le connecteur de contenu utilise items.push pour envoyer les métadonnées et les hachages dans une file d'attente.
    • Si le connecteur inclut un type ou un contentHash, Cloud Search détermine l'état.
    • Les éléments inconnus reçoivent l'état NEW_ITEM.
    • Les éléments existants dont les hachages correspondent restent ACCEPTED.
    • Les éléments existants avec des hachages différents deviennent MODIFIED.
  2. Le connecteur utilise items.poll pour déterminer les éléments à indexer. Cloud Search renvoie les éléments par ordre de priorité.
  3. Le connecteur récupère les éléments du dépôt et crée des requêtes d'API Index.
  4. Le connecteur utilise items.index pour indexer les éléments. Un élément passe à l'état ACCEPTED une fois le traitement terminé.

Supprimer un élément

La stratégie de balayage complet utilise deux files d'attente pour indexer les éléments et détecter les suppressions. La figure 2 montre la deuxième traversée de cette stratégie.

Présentation de l'indexation Cloud Search
Figure 2. Supprimer des éléments
  1. Lors du premier parcours, le connecteur insère les éléments dans la "file A" en tant que NEW_ITEM. Chaque élément reçoit le libellé "A.".
  2. Le connecteur interroge la file d'attente A et indexe les éléments.
  3. Lors du deuxième balayage complet, le connecteur ajoute les éléments à la file d'attente B.
    • Les éléments inconnus reçoivent le libellé "B" et l'état NEW_ITEM.
    • Les éléments existants dont les hachages correspondent voient leur libellé remplacé par "B" et restent ACCEPTED.
    • Les éléments existants avec des hachages différents voient leur libellé passer à "B" et deviennent MODIFIED.
  4. Le connecteur interroge la file d'attente B et indexe les éléments.
  5. Enfin, le connecteur appelle deleteQueueItems sur la file d'attente A. Cette requête supprime tous les éléments indexés précédemment qui comportent encore le libellé "A".
  6. Les traversées suivantes inversent les rôles des deux files d'attente.

Opérations de file d'attente (SDK Connector)

Utilisez le compilateur pushItems pour envoyer des éléments. Le SDK extrait automatiquement les éléments de la file d'attente par ordre de priorité à l'aide de la méthode getDoc de la classe Repository.

Opérations de file d'attente (API REST)

Vous pouvez également utiliser Items.index pour ajouter des éléments pendant l'indexation. Ces éléments reçoivent automatiquement l'état ACCEPTED.

Items.push

Cette méthode ajoute des ID à la file d'attente. L'type détermine le résultat. L'envoi d'un nouvel ID ajoute une entrée avec l'état NEW_ITEM. La charge utile facultative est renvoyée lors de l'interrogation.

Les éléments interrogés sont réservés et ne peuvent pas être renvoyés par d'autres appels d'interrogation. L'utilisation de Items.push avec type défini sur NOT_MODIFIED, REPOSITORY_ERROR ou REQUEUE annule la réservation des entrées.

Items.push avec hachages

Spécifiez les hachages de métadonnées ou de contenu dans la requête push. Cloud Search les compare aux valeurs stockées. Si elles ne correspondent pas, l'entrée passe à MODIFIED. Les ID non correspondants qui n'existent pas deviennent NEW_ITEM.

Items.poll

Cette méthode récupère les entrées à haute priorité. Chaque entrée renvoyée est réservée jusqu'à ce qu'elle expire, soit réindexée ou soit libérée à l'aide de Items.push.