Détection des modifications et des suppressions à l’aide d’indexeurs pour Stockage Azure dans Recherche Azure AI

Après avoir créé un index de recherche initial, vous souhaiterez peut-être que les travaux de l’indexeur récupèrent uniquement les documents nouveaux et changés. Pour le contenu indexé qui provient de Stockage Azure, la détection des modifications se fait automatiquement, car les indexeurs gardent la trace de la dernière mise à jour à l’aide des timestamps intégrés aux objets et aux fichiers de Stockage Azure.

Bien que la détection des modifications soit acquise, la détection des suppressions ne l’est pas. Un indexeur ne suit pas la suppression des objets dans les sources de données. Pour éviter d’avoir des documents de recherche orphelins, vous pouvez implémenter une stratégie de « suppression réversible » qui se traduit par la suppression des documents de recherche en premier lieu, suivie d’une suppression physique dans Stockage Azure dans un deuxième temps.

Il existe deux façons d’implémenter une stratégie de suppression réversible :

La stratégie de détection de suppression doit être appliquée à partir de la toute première exécution d’indexeur. Si vous n’instaurez pas la stratégie de suppression avant l’exécution initiale, les documents supprimés avant l’implémentation de la stratégie restent dans votre index, même si vous ajoutez la stratégie à l’indexeur plus tard et le réinitialisez. Si cela s’est produit, nous vous suggérons de créer un index en utilisant un nouvel indexeur, ce qui veille à ce que la stratégie de suppression soit en place depuis le début.

Prérequis

  • Utilisez un indexeur Stockage Azure pour Stockage Blob, Stockage Table, Stockage Fichier ou Data Lake Storage Gen2.

  • Utilisez des clés de document et une structure de fichiers cohérentes. La modification des clés de document ou des noms et chemins d’accès des répertoires (s’applique à ADLS Gen2) entraîne l’interruption des informations de suivi internes utilisées par les indexeurs pour savoir quel contenu a été indexé et à quel moment il a été indexé pour la dernière fois.

Remarque

ADLS Gen2 permet de renommer les répertoires. Quand un répertoire est renommé, les timestamps des blobs qu’il contient ne sont pas mis à jour. Par conséquent, l’indexeur ne réindexe pas ces blobs. Si vous avez besoin que les blobs d’un répertoire soient réindexés après le changement de nom de celui-ci parce que leurs URL ont changé, vous devez mettre à jour le timestamp LastModified pour tous les blobs du répertoire afin que l’indexeur sache qu’il doit les réindexer lors d’une prochaine exécution. Les répertoires virtuels dans Stockage Blob Azure ne pouvant pas être modifiés, ils ne rencontrent pas ce problème.

Suppression réversible native d’objets blob

Pour cette approche de la détection de la suppression, le service Recherche Azure AI s’appuie sur la fonctionnalité de suppression réversible de blobs natifs du service Stockage Blob Azure pour déterminer si les objets blob sont passé à un état de suppression réversible. Quand des objets blob sont détectés dans cet état, un indexeur de recherche utilise ces informations pour supprimer le document correspondant de l’index.

Exigences relatives à la suppression réversible native

  • Les blobs doivent se trouver dans un conteneur du service Stockage Blob Azure. La stratégie de suppression réversible d’objets blob natifs de Recherche Azure AI n’est pas prise en charge pour les objets blob dans ADLS Gen2 ou Azure Files.

  • Activez la suppression réversible pour les objets blob.

  • Les clés de document des documents de votre index doivent être mappées à une propriété blob ou à des métadonnées blob, telles que « metadata_storage_path ».

  • Vous devez utiliser l’API REST en préversion (2024-05-01-preview) ou la configuration de source de données d’indexeur dans le Portail Azure pour configurer la prise en charge de la suppression réversible.

  • Le contrôle de version d’objets blob ne doit pas être activé dans le compte de stockage. Sinon, la suppression réversible native n’est pas prise en charge par conception.

Configurer la suppression réversible native

Dans le stockage Blob, lors de l’activation de la suppression réversible conformément aux exigences, définissez la stratégie de conservation sur une valeur sensiblement supérieure à celle de la planification d’intervalle de votre indexeur. En cas de problème lors de l’exécution de l’indexeur ou si vous avez un grand nombre de documents à indexer, l’indexeur a tout le temps nécessaire pour traiter les blobs supprimés de manière réversible. Les indexeurs Recherche Azure AI suppriment un document de l’index uniquement s’ils traitent le blob alors que son état est Supprimé de manière réversible.

Dans Recherche Azure AI, définissez une stratégie de détection de suppression réversible de blobs natifs sur la source de données. Vous pouvez le faire à partir du Portail Azure ou en utilisant une API REST en préversion (2024-05-01-preview). Les instructions suivantes expliquent comment définir la stratégie de détection des suppressions dans le portail Azure ou via des API REST.

  1. Connectez-vous au portail Azure.

  2. Dans la page Vue d’ensemble du service Recherche Azure AI, accédez à Nouvelle source de données, un éditeur visuel pour spécifier une définition de source de données.

    La capture d’écran suivante montre où vous pouvez trouver ces fonctionnalités dans le portail.

    Capture d’écran montrant la configuration de la source de données dans l’Assistant Importation de données.

  3. Dans le formulaire Nouvelle source de données , renseignez les champs requis, cochez la case Suivi des suppressions et choisissez Suppression réversible d’objets blob natifs. Appuyez ensuite sur Enregistrer pour activer la fonctionnalité lors de la création de la source de données.

    Capture d’écran de la suppression réversible native de la source de données du portail.

Réindexer des blobs restaurés à l’aide de stratégies de suppression réversible native

Si vous restaurez un objet blob supprimé de manière réversible dans le stockage Blob, l’indexeur ne le réindexe pas systématiquement. En effet, l’indexeur utilise l’horodateur LastModified de l’objet blob pour déterminer si l’indexation est nécessaire. Quand la suppression de manière réversible d’un blob est annulée, son horodateur LastModified n’est pas mis à jour. Ainsi, si l’indexeur a déjà traité des blobs dont les horodateurs LastModified sont plus récents, il ne réindexe pas le blob dont la suppression a été annulée.

Pour vous assurer qu’un blob dont la suppression a été annulée est réindexé, vous devez mettre à jour l’horodateur LastModified du blob. Pour ce faire, vous pouvez réenregistrer les métadonnées de ce blob. Vous n’avez pas besoin de changer les métadonnées, mais le réenregistrement de celles-ci a pour effet de mettre à jour l’horodateur LastModified du blob de sorte que l’indexeur sait qu’il peut le récupérer.

Stratégie de suppression réversible utilisant des métadonnées personnalisées

Cette méthode utilise des métadonnées personnalisées pour indiquer si un document de recherche doit être supprimé de l’index. Elle nécessite deux actions distinctes : la suppression du document de recherche de l’index, suivie de la suppression du fichier dans Stockage Azure.

Cette fonctionnalité est en disponibilité générale.

Vous devez suivre certaines étapes à la fois dans Stockage Azure et dans Recherche Azure AI, mais il n’y a pas d’autres dépendances de fonctionnalités.

  1. Dans Stockage Azure, ajoutez une paire clé-valeur de métadonnées personnalisées au fichier pour indiquer que le fichier est marqué pour suppression. Par exemple, vous pouvez nommer la propriété « IsDeleted », définie sur false. Lorsque vous souhaitez supprimer le fichier, attribuez-lui la valeur true.

  2. Dans Recherche Azure AI, modifiez la définition de la source de données de façon à inclure une propriété « dataDeletionDetectionPolicy ». Par exemple, la stratégie suivante considère qu’un fichier est supprimé s’il présente une propriété de métadonnées IsDeleted avec la valeur true :

    PUT https://[service name].search.windows.net/datasources/file-datasource?api-version=2024-07-01
    {
        "name" : "file-datasource",
        "type" : "azurefile",
        "credentials" : { "connectionString" : "<your storage connection string>" },
        "container" : { "name" : "my-share", "query" : null },
        "dataDeletionDetectionPolicy" : {
            "@odata.type" :"#Microsoft.Azure.Search.SoftDeleteColumnDeletionDetectionPolicy",
            "softDeleteColumnName" : "IsDeleted",
            "softDeleteMarkerValue" : "true"
        }
    }
    
  3. Exécutez l’indexeur. Une fois que l’indexeur a traité le fichier et supprimé le document de l’index de recherche, vous pouvez supprimer le fichier physique dans Stockage Azure.

Réindexer des blobs et fichiers restaurés

Vous pouvez annuler une suppression réversible si le fichier source original existe toujours physiquement dans Stockage Azure.

  1. Changez la valeur de "softDeleteMarkerValue" : "false" sur le blob ou le fichier dans Stockage Azure.

  2. Vérifiez l’horodateur LastModified du blob ou du fichier pour vous assurer qu’il est plus récent que la dernière exécution de l’indexeur. Vous pouvez forcer une mise à jour à la date et à l’heure actuelles en réenregistrant les métadonnées existantes.

  3. Exécutez l’indexeur.

Étapes suivantes