Azure 搜索 - AzureSearch_SkipContent

Azure Search - AzureSearch_SkipContent

我有一些非常大的 blob,所以我使用以下代码在 blob 行上设置 AzureSearch_SkipContent

if (b.Properties.Length >= 134217728)
{
    b.Metadata["AzureSearch_SkipContent"] = "true";
    await b.SetMetadataAsync();
}

但是当我查看警告和错误时,我可以看到索引器已尝试索引内容,即使我已要求它跳过,我看到的错误是(这是错误,所以我想它不是将为这个 blob 索引任何东西):

{
    "key": null,
    "errorMessage": "The blob '113443f46d1b184650bf4b0d5b0b3806055c43558a676b778de13f1b7ef4da93' has the size of 218285352 bytes, which exceeds the maximum size for document extraction for your current service tier."
},

如果我在存储资源管理器中查看此 blob,我会看到

true

中需要大写 T
if (b.Properties.Length >= 134217728)
{
    b.Metadata["AzureSearch_SkipContent"] = "True";
    await b.SetMetadataAsync();
}

如有疑问,请使用文字并转换为字符串

b.Metadata["AzureSearch_SkipContent"] = true.ToString();

bool skipIndex = true;
b.Metadata["AzureSearch_SkipContent"] = skipIndex.ToString();

2018 年 1 月 3 日更新

为了让这个场景正常工作,我们正在添加 indexStorageMetadataOnlyForOversizedDocuments 索引器配置设置。它采用布尔值,默认情况下为 false,因此在索引器配置中将其设置为 true 以启用它。这是刚出炉的,将于 1 月 19 日在全球范围内投入生产。

原始回复

"true""True"都是AzureSearch_SkipContent的有效值。问题是 AzureSearch_SkipContent 而不是 意味着 blob 内容被忽略了。

Blob 内容以两种方式贡献:

  1. 作者、修改日期等元数据
  2. 文档的文本内容。

AzureSearch_SkipContent 意味着 Azure 搜索只执行 #1 而不是 #2,但是 blob 仍然需要下载,所以 blob 大小配额开始发挥作用。

目前,唯一的其他 per-blob 处理选项是 AzureSearch_Skip,它完全跳过了 blob。您还可以使用 MaxFailedItems / MaxFailedItemsPerBatch 来指定特定数量的错误,如 Dealing with errors 中所述。

我认为对于这种情况真正有用的是 Azure 搜索能够自动提取大型 blob 的存储元数据,而无需单独处理所有 blob。请随时在我们的 User Voice site.

上为此添加建议