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).
- Le connecteur de contenu utilise
items.pushpour envoyer les métadonnées et les hachages dans une file d'attente.- Si le connecteur inclut un
typeou uncontentHash, 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.
- Si le connecteur inclut un
- Le connecteur utilise
items.pollpour déterminer les éléments à indexer. Cloud Search renvoie les éléments par ordre de priorité. - Le connecteur récupère les éléments du dépôt et crée des requêtes d'API Index.
- Le connecteur utilise
items.indexpour indexer les éléments. Un élément passe à l'étatACCEPTEDune 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.
- 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.". - Le connecteur interroge la file d'attente A et indexe les éléments.
- 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.
- Les éléments inconnus reçoivent le libellé "B" et l'état
- Le connecteur interroge la file d'attente B et indexe les éléments.
- Enfin, le connecteur appelle
deleteQueueItemssur la file d'attente A. Cette requête supprime tous les éléments indexés précédemment qui comportent encore le libellé "A". - 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)
- Pour transférer : utilisez
Items.push. - Pour interroger : utilisez
Items.poll.
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.