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).
- Le connecteur de contenu utilise
items.pushpour envoyer des métadonnées et des hachages dans une file d'attente.- Si le connecteur inclut un push
typeoucontentHash, 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.
- Si le connecteur inclut un push
- 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 d'indexation.
- 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 le deuxième balayage de cette stratégie.
- 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". - Le connecteur interroge la file d'attente A et indexe les éléments.
- 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.
- 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. Cela supprime tous les éléments précédemment indexés qui portent encore le libellé "A". - 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)
- Pour envoyer : utilisez
Items.push. - Pour interroger : utilisez
Items.poll.
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.