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 d'indexation de chaque document (état, hachages, etc.), ce qui permet de synchroniser l'index ;
  • établir la liste des éléments à indexer selon l'analyse effectuée durant le processus de balayage ;
  • définir la 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 ItemStatus code. Les codes possibles, par ordre de priorité (du plus élevé au plus bas), sont les suivants :

  • 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'élément n'est pas encore 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é la plus élevée est attribuée à ceux qui se trouvent 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 connaître les équivalents du 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 mettre à jour un élément
  1. Le connecteur de contenu utilise items.push pour envoyer des métadonnées et des hachages dans une file d'attente.
    • Si le connecteur inclut un push type ou contentHash, Cloud Search détermine l'état.
    • Les éléments inconnus reçoivent l'état NEW_ITEM.
    • Les éléments existants avec des hachages correspondants 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 d'indexation.
  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 le deuxième balayage de cette stratégie.

Présentation de l'indexation Cloud Search
Figure 2. Suppression d'éléments
  1. Lors du balayage initial, le connecteur envoie les éléments dans la "file d'attente 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 envoie les éléments dans la "file d'attente B".
    • Les éléments inconnus reçoivent le libellé "B" et l'état NEW_ITEM.
    • Les éléments existants avec des hachages correspondants voient leur libellé remplacé par "B" et restent ACCEPTED.
    • Les éléments existants avec des hachages différents voient leur libellé remplacé par "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. Cela supprime tous les éléments précédemment indexés qui portent encore le libellé "A".
  6. Les balayages suivants inversent les rôles des deux files d'attente.

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

Utilisez le pushItems compilateur 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 envoyer des éléments lors de l'indexation. Ces éléments reçoivent automatiquement l'état ACCEPTED.

Items.push

Cette méthode ajoute des ID à la file d'attente. Le 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 des métadonnées ou des hachages de contenu dans la requête push. Cloud Search les compare aux valeurs stockées. S'ils ne correspondent pas, l'entrée devient MODIFIED. Les ID non correspondants qui n'existent pas deviennent NEW_ITEM.

Items.poll

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