【问题标题】:Using Azure Search AzureSearch_SkipContent metadata to index image but without trying to extract content使用 Azure 搜索 AzureSearch_SkipContent 元数据来索引图像但不尝试提取内容
【发布时间】:2017-02-28 00:28:22
【问题描述】:

我有一个 Azure 存储容器,其中包含存储为 blob 的混合文件(pdf、doc、docx、jpg、png、...)。

我正在尝试使用 Azure 搜索 blob 索引器来索引所有文件(包括图像)的元数据,并在可能的情况下提取内容以进行全文搜索(显然图像没有任何可提取的文本内容) .想要提取图像元数据背后的想法是,我想要在图像的搜索索引中输入一个条目,因为我在 DocumentDB 中有其他数据,我想使用 WebJob 手动合并到搜索索引中。

使用 Azure 门户,我添加了数据源、索引和索引器,但是,当索引器运行时,它失败并出现以下错误:

Document 'https://xxx.blob.core.windows.net/xxx/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx-v1' has unsupported content type 'image/jpeg'

阅读https://azure.microsoft.com/en-us/documentation/articles/search-howto-indexing-azure-blob-storage/#using-custom-metadata-to-control-document-extraction 上的文档时提到,如果我使用“AzureSearch_SkipContent”键和“true”值将元数据添加到 blob,那么它不应该尝试提取内容。

将“AzureSearch_SkipContent”元数据添加到https://azure.microsoft.com/en-us/documentation/articles/search-howto-indexing-azure-blob-storage/#content-type-specific-metadata-properties 上的表中未列出的所有内容类型后,索引器仍然失败并出现上述错误。

如果我将“AzureSearch_Skip”元数据设置为“true”,那么索引器会跳过图像 blob,但是我的索引中没有任何内容 - 这不是我想要的。

这是我尝试实现的步骤的示例:

  • 将灭火器的图像(例如)保存到 blob 存储中
  • 同时我在 DocumentDB 中存储了一些关于灭火器的额外信息
  • 我希望 Blob 索引器找到新图像并向新 Blob 的搜索索引添加一行,而不尝试提取任何文本内容
  • 自定义 WebJob 将使用相关 DocumentDB 文档中的信息更新搜索索引中的新行

那么,是否可以将“AzureSearch_SkipContent”添加到图像 blob 并在搜索索引中显示一些内容?还是我唯一的解决方案是完全“AzureSearch_Skip”,然后手动在搜索索引中添加一些内容?

【问题讨论】:

    标签: image azure search azure-blob-storage azure-cognitive-search


    【解决方案1】:

    AzureSearch_SkipContent 标志仅适用于受支持的内容类型,其中 Azure 搜索可以提取内容类型特定的元数据。

    Azure 搜索还支持对存储元数据编制索引并跳过内容类型元数据和内容提取 - 在这种情况下,内容类型无关紧要。但是,此设置仅在索引器范围内可用,并适用于 所有 blob。见Index storage metadata only

    我们从几个客户那里听到了类似的问题,因此我们正在添加另一个开关,其行为如下:

    1. 具有受支持内容类型的 Blob 将被完全编入索引(当然要考虑每个 Blob 标志)
    2. 对于内容类型不受支持的 blob,Azure 搜索将索引存储元数据,并且不会像现在那样在这些 blob 上失败。

    看起来这对您的情况会有所帮助。

    2016 年 12 月 7 日更新: 现在可以使用此功能。要在遇到不受支持的内容类型时继续编制索引,请将 failOnUnsupportedContentType 配置参数设置为 false:

    PUT https://[service name].search.windows.net/indexers/[indexer name]?api-version=2016-09-01
    Content-Type: application/json
    api-key: [admin key]
    
    {
     ... other parts of indexer definition
     "parameters" : { "configuration" : { "failOnUnsupportedContentType" : false } }
    } 
    

    更多信息请见Controlling which blobs are indexed

    【讨论】:

    • 谢谢,这很有帮助。听起来新开关正是我正在寻找的功能。是否有任何关于新开关何时可用的估计?
    • 目前无法提供官方预计到达时间,但可能需要约 2-3 周。
    • 你知道这是否已经实现了吗?
    • 是的。请参阅Dealing with unsupported content types 部分here
    • 这是一个非常愚蠢的解决方案,因为现在我的索引器将始终处于警告状态,即使一切都按预期工作。这将很难发现可能出现的其他警告。
    猜你喜欢
    • 1970-01-01
    • 2017-05-27
    • 1970-01-01
    • 2018-04-30
    • 1970-01-01
    • 2018-11-19
    • 2016-11-13
    • 2020-01-09
    • 1970-01-01
    相关资源
    最近更新 更多