如何设置附加到 Azure 存储的 Azure 搜索软删除策略

How to setup an Azure Search soft-delete policy attached to Azure Storage

我有一个使用 Azure Storage 作为数据源的 Azure Search。我试图让 Search 从结果中删除文件,只要它们在 Storage 中被删除,但不知何故我似乎无法实现它。

到目前为止,我已尝试在 Storage 上设置软删除策略以将文件再保留 7 天,并在 Search 上设置软删除策略以检查元数据列 IsDeleted 如果 true 从结果中删除该项目。然后使用代码更改元数据,然后按如下方式删除文件:

blob.Metadata["IsDeleted"] = "true";
blob.SetMetadataAsync().Wait();
blob.DeleteAsync().Wait();

不删除它似乎工作正常,但我猜 Search 不能再访问元数据,即使文件仍然保留。我假设已经想到了这么简单的东西,但我似乎找不到它。

简而言之,您不能在 Azure 搜索中使用软删除 blob。

当从存储中软删除 blob 时,出于所有目的和目的,该 blob 将被删除。在先取消删除之前,您不能对 blob 执行任何操作。它也不会作为常规 blob 列表过程的一部分返回。

因此,当索引器运行以获取 blob 列表时,它不会找到软删除的 blob。从搜索服务索引器的角度标记已删除 blob 的唯一方法是将 blob 保存在存储中并将元数据 属性 "IsDeleted" 设置为 "true",这就是您正在做的。