File d'attente d'indexation de Google Cloud Search

Le SDK Connector et l'API REST Cloud Search permettent de créer des files d'attente d'indexation Cloud Search pour effectuer les tâches suivantes :

  • Déterminer l'état d'indexation de chaque document (état, valeurs de hachage, etc.) ce qui permet de synchroniser l'index avec votre dépôt

  • É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 figurant dans la file d'attente en fonction de leur état d'indexation

  • Déterminer d'autres informations d'état favorisant une intégration efficace, telles que les points de contrôle, les jetons de modification, etc.

État et priorité

La priorité d'un document dans une file d'attente est fonction de son attribut ItemStatus code. Voici les attributs ItemStatus codes possibles par ordre de priorité (de la plus forte à la plus faible) :

  • ERROR : élément ayant rencontré une erreur asynchrone lors du processus d'indexation et devant être réindexé.

  • MODIFIED : élément déjà indexé, mais qui a été modifié dans le dépôt depuis la dernière indexation.

  • NEW_ITEM : élément non indexé.

  • ACCEPTED : document précédemment indexé et qui n'a pas été modifié dans le dépôt depuis la dernière indexation.

Lorsque deux éléments d'une file d'attente ont le même état, la priorité est donnée à celui qui figure dans la file d'attente depuis le plus longtemps.

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

Le SDK Content Connector fournit des opérations permettant d'ajouter des éléments à une file d'attente ou d'en retirer.

Pour empaqueter et ajouter un élément à une file d'attente, utilisez la classe pushItems.Builder.

Vous n'avez rien de particulier à faire pour retirer des éléments d'une file d'attente à traiter. Le SDK retire 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)

L'API REST fournit les deux méthodes suivantes permettant d'ajouter et de retirer des éléments dans une file d'attente :

  • Pour ajouter un élément à une file d'attente, utilisez Items.push.
  • Pour interroger les éléments de la file d'attente, utilisez Items.poll.

Vous pouvez également ajouter des éléments à la file d'attente pendant l'indexation avec Items.index. Les éléments ajoutés à la file d'attente durant l'indexation ne nécessitent pas de type et se voient automatiquement attribuer l'état ACCEPTED.

Items.push

La méthode Items.push ajoute des ID à la file d'attente. Elle peut être appelée avec une valeur type spécifique qui détermine le résultat de l'opération d'ajout. Pour connaître la liste des valeurs de l'attribut type, reportez-vous au champ item.type de la méthode Items.push.

L'ajout d'un ID entraîne l'ajout d'une entrée associée au ItemStatus code NEW_ITEM.

La charge utile facultative est toujours stockée, traitée comme une valeur opaque et renvoyée par Items.poll.

Lorsqu'un élément est interrogé, il est réservé, ce qui signifie qu'il ne peut pas être renvoyé par un autre appel à Items.poll. Pour annuler la réservation des entrées interrogées, utilisez Items.push en associant la valeur NOT_MODIFIED, REPOSITORY_ERROR ou REQUEUE à l'attribut type. Pour plus d'informations sur les entrées réservées et disponibles, reportez-vous à la section Items.poll.

Items.push avec hachages

L'API REST de Cloud Search permet de spécifier les valeurs de hachage des métadonnées et du contenu dans les requêtes Items.index. Plutôt que de spécifier le type, vous pouvez indiquer les valeurs de hachage des métadonnées et/ou du contenu à l'aide d'une requête d'ajout. La file d'attente d'indexation Cloud Search compare les valeurs de hachage fournies avec les valeurs stockées avec l'élément dans la source de données. Si elles ne correspondent pas, l'entrée concernée est marquée comme MODIFIED. Si aucun élément correspondant n'existe dans l'index, l'état de l'élément devient alors NEW_ITEM.

Items.poll

La méthode Items.poll récupère les entrées ayant la priorité la plus élevée dans la file d'attente. Les valeurs d'état demandées et renvoyées indiquent l'état de la ou des files d'attente prioritaires demandées ou l'état des ID renvoyés.

Par défaut, les entrées sont renvoyées en fonction de leur priorité, indépendamment de la section de file d'attente dans laquelle elles figurent. Chaque entrée renvoyée est réservée et n'est plus renvoyée par les autres appels à Items.poll, jusqu'à ce que l'un des événements suivants se produise :

  • La réservation expire.
  • L'entrée est de nouveau mise en file d'attente par la méthode Items.index.
  • La méthode Items.push est appelée avec un type associé à la valeur NOT_MODIFIED, REPOSITORY_ERROR ou REQUEUE.