Notification de l’index des modifications (Recherche Windows)
À l’aide des API de notification, les composants peuvent informer l’indexeur qu’un élément a été modifié, déplacé ou supprimé, et peuvent ajouter des étendues de recherche à la file d’attente d’URL de l’indexeur Recherche Windows qui nécessite une indexation.
Les composants peuvent informer l’indexeur Recherche Windows que les données de leur magasin ont été modifiées. En règle générale, vous pouvez vous appuyer sur les analyses planifiées de l’indexeur. Toutefois, la fourniture de notifications à l’indexeur peut améliorer les performances en s’assurant que l’indexeur n’analyse pas l’ensemble du magasin sur des index incrémentiels. Par exemple, cela peut être recommandé si vous vous attendez à ce que votre magasin de données soit exceptionnellement volumineux et/ou particulièrement occupé, comme un magasin de données de messagerie par exemple.
- Implémentation de notifications gérées par l’indexeur
- Implémentation de notifications gérées par le fournisseur
- Ressources supplémentaires
- Rubriques connexes
Implémentation de notifications gérées par l’indexeur
Les notifications gérées par l’indexeur vous permettent de contrôler l’accès à votre magasin de données tout en vous libérant de la gestion de la file d’attente des notifications tout au long du processus d’indexation. Votre fournisseur de notifications doit surveiller les modifications apportées au magasin de données et créer une file d’attente de notifications. Régulièrement, votre fournisseur envoie un lot de notifications de modification à l’indexeur. Lorsque l’indexeur reçoit vos notifications, il retourne un accusé de réception et vous pouvez supprimer le ou les éléments de votre file d’attente. Si, après un certain temps, vous ne recevez pas d’accusé de réception, vous pouvez renvoyer les notifications. En cas de défaillance, l’indexeur reconstruit sa file d’attente interne d’éléments à analyser ou effectue une analyse incrémentielle du magasin.
Pour implémenter les notifications gérées par l’indexeur, vous devez implémenter les éléments suivants :
- Mécanisme de surveillance des modifications dans votre magasin de données.
- Structure de données pour mettre en file d’attente des informations (plusieurs structures SEARCH_ITEM_PERSISTENT_CHANGE ) sur ces modifications.
- Interface ISearchPersistentItemsChangedSink pour envoyer vos notifications à l’indexeur et obtenir des accusés de réception de notification de l’indexeur.
File d’attente des notifications
Vous devez surveiller et mettre en file d’attente chaque modification de votre magasin de données à envoyer à l’indexeur sous forme de notification. Le nombre de notifications mises en file d’attente et la fréquence à laquelle vous les envoyez à l’indexeur dépendent de votre situation. Vous envoyez peut-être un lot de notifications pour chaque n nombre de modifications ou après un intervalle de temps t , ou une combinaison des deux.
L’indexeur s’attend à ce que les notifications arrivent dans un tableau de structures SEARCH_ITEM_PERSISTENT_CHANGE . Vous pouvez donc choisir d’implémenter votre file d’attente de la même façon.
ISearchPersistentItemsChangedSink
Pour accéder à cette interface, vous devez d’abord instancier un objet ISearchManager pour accéder à un objet ISearchCatalogManager . À partir de cet objet ISearchCatalogManager , vous instanciez un objet ISearchPersistentItemsChangedSink et informez l’indexeur des modifications de données avec un appel à la méthode OnItemsChanged .
Dans l’appel à cette méthode, vous incluez le nombre de modifications signalées et un tableau de structures SEARCH_ITEM_PERSISTENT_CHANGE . Vous obtenez un tableau de codes d’achèvement RH indiquant si chaque URL a été acceptée pour l’indexation. Il s’agit de votre accusé de réception de l’indexeur.
Implémentation de notifications gérées par le fournisseur
Les notifications gérées par le fournisseur vous permettent de contrôler l’accès à votre magasin de données et de surveiller la progression de l’indexeur à mesure qu’il met à jour le catalogue Recherche Windows. Votre fournisseur doit surveiller les modifications apportées au magasin de données et créer une file d’attente de notifications. Régulièrement, votre fournisseur envoie un lot de notifications de modification à l’indexeur. Lorsque l’indexeur reçoit vos notifications, il retourne un accusé de réception. Si, après un certain temps, vous ne recevez pas d’accusé de réception, vous pouvez renvoyer les notifications. Lorsque l’indexeur analyse le magasin de données et met à jour le catalogue Windows Search, il avertit votre fournisseur de chaque mise à jour du catalogue et vous pouvez supprimer le ou les éléments de votre file d’attente. Votre fournisseur conserve sa file d’attente de notifications tout au long de ce processus afin qu’en cas d’échec, vous puissiez renvoyer des notifications à l’indexeur.
Pour implémenter les notifications gérées par le fournisseur, vous devez implémenter les éléments suivants :
- Mécanisme de surveillance des modifications dans votre magasin de données.
- Structure de données pour mettre en file d’attente des informations (plusieurs structures SEARCH_ITEM_CHANGE ) sur ces modifications.
- Interface ISearchItemsChangedSink pour envoyer vos notifications à l’indexeur et obtenir des accusés de réception de notification de l’indexeur.
- Interface ISearchNotifyInlineSite pour recevoir des mises à jour sur la status de l’indexation.
File d’attente des notifications
Vous devez surveiller et mettre en file d’attente chaque modification de votre magasin de données à envoyer à l’indexeur sous forme de notification. Le nombre de notifications mises en file d’attente et la fréquence à laquelle vous les envoyez à l’indexeur dépendent de votre situation. Vous envoyez peut-être un lot de notifications pour chaque n nombre de modifications ou après un intervalle de temps t , ou une combinaison des deux.
L’indexeur s’attend à ce que les notifications arrivent dans un tableau de structures SEARCH_ITEM_CHANGE . Vous pouvez donc choisir de stocker les informations de modification de la même façon. Toutefois, vous devez également être en mesure de faire correspondre les notifications que vous envoyez avec les accusés de réception et les mises à jour retournés par l’indexeur. Vous pouvez également être en mesure de détecter le temps nécessaire pour obtenir des accusés de réception, afin de décider si/quand renvoyer des notifications.
ISearchItemsChangedSink
Pour accéder à cette interface, vous devez d’abord instancier un objet ISearchManager pour accéder à un objet ISearchCatalogManager . À partir de cet objet ISearchCatalogManager , vous instanciez un objet ISearchItemsChangedSink et informez l’indexeur des modifications de données avec un appel à la méthode OnItemsChanged .
Dans l’appel à cette méthode, vous incluez le nombre de modifications signalées et un tableau de structures SEARCH_ITEM_CHANGE . Vous obtenez un tableau de DocIds attribués à l’indexeur qui représentent chaque modification, ainsi qu’un tableau de codes d’achèvement HR indiquant si chaque URL a été acceptée pour l’indexation. Il s’agit de votre accusé de réception par l’indexeur qu’il a reçu vos notifications et qu’il se prépare à indexer les éléments.
À partir de ce point, l’indexeur envoie les mises à jour à l’aide de l’interface ISearchNotifyInlineSite .
ISearchNotifyInlineSite
Pour obtenir des mises à jour sur la status de vos éléments et du catalogue, vous devez inscrire votre interface ISearchNotifyInlineSite auprès de l’indexeur afin qu’elle puisse vous envoyer des rappels. Chaque mise à jour envoyée à l’aide de ISearchNotifyInlineSite::OnItemIndexedStatusChange identifie les éléments par DocId, le status de chaque élément (SEARCH_ITEM_INDEXING_STATUS) et la phase d’indexation (SEARCH_INDEXING_PHASE) dans laquelle les éléments se trouvent.
Non seulement vous recevez des mises à jour sur la status de chaque élément, comme décrit précédemment, mais vous obtenez également des informations importantes sur la status du catalogue lui-même. L’service Search Windows peut être interrompu ou redémarré par l’utilisateur final, une application tierce ou toute autre défaillance. Dans ce cas, vous avez besoin d’un moyen de déterminer les notifications à envoyer à l’indexeur.
La méthode ISearchNotifyInlineSite::OnCatalogStatusChange, appelée par le service Search Windows, informe les clients de l’status du catalogue à l’aide des paramètres décrits dans le tableau suivant.
Paramètre | Description |
---|---|
guidCatalogResetSignature | GUID représentant la réinitialisation du catalogue. Si ce GUID change, toutes les notifications doivent être envoyées de nouveau. |
guidCheckPointSignature | GUID représentant le dernier point de contrôle restauré. Si ce GUID change, toutes les notifications accumulées depuis le dernier point de contrôle enregistré doivent être envoyées de nouveau. |
dwLastCheckPointNumber | Nombre indiquant le dernier point de contrôle enregistré. |
Lorsqu’un point de contrôle de catalogue se produit, le service de recherche met à jour dwLastCheckPointNumber, et toutes les notifications envoyées avant ce point de contrôle sont sécurisées et récupérables en cas de défaillance du service. Les fournisseurs de notifications doivent suivre uniquement les notifications envoyées entre les points de contrôle et les repush en cas de restauration ou de réinitialisation du catalogue.
Si une restauration de catalogue se produit, le service de recherche restaure le catalogue au dernier point de contrôle enregistré et met à jour guidCheckPointSignature. Dans ce cas, les fournisseurs de notifications doivent effacer toutes les notifications accumulées depuis le point de contrôle enregistré le plus récent, tel qu’identifié par le dwLastCheckPointNumber.
Si une réinitialisation du catalogue doit se produire, le service de recherche réinitialise l’ensemble du catalogue et met à jour guidCatalogResetSignature. Le fournisseur de notifications doit ressusuter l’ensemble de son étendue d’analyse.
Ressources supplémentaires
- Pour obtenir une vue d’ensemble du processus d’indexation, consultez Le processus d’indexation.
- Pour obtenir des vues d’ensemble du Gestionnaire de catalogue et du Gestionnaire de recherche de catalogue (CSM), consultez Utilisation du Gestionnaire de catalogue et Utilisation du Gestionnaire d’étendues d’analyse.
- Pour plus d’informations sur la création d’un magasin de données Shell, consultez Implémentation des interfaces objet dossier de base.
Rubriques connexes
-
Conceptuel
-
Exemple de code : Extensions d’interpréteur de commandes pour les gestionnaires de protocole
-
Création d’un connecteur de recherche pour un gestionnaire de protocole