【问题标题】:Azure Search : Blob Metadata Field value not appearing in Indexed dataAzure 搜索:Blob 元数据字段值未出现在索引数据中
【发布时间】:2020-06-15 06:57:24
【问题描述】:

我们已经在块 Blob 上设置了元数据,并且能够验证在 Blob 上正确标记的键/值。

在索引中定义的许多字段中,只有一个字段值(PromotionId)没有出现在索引数据中,这可以通过“搜索资源管理器”执行搜索来确认。

此字段实际上已映射到索引器中的键“ID”。

并且已经在Index中定义了。

为什么这个特定字段的值没有出现在索引中?其余所有元数据字段都按预期出现在索引中。

【问题讨论】:

    标签: azure-cognitive-search


    【解决方案1】:

    字段映射不起作用,因为“ID”被指定为 sourceFieldName,但源 Blob 上没有 ID 属性,因为它只存在于您定义的索引上。

    这可能有点令人困惑,因为它的行为就像有一个“ID”属性,因为“ID”字段是在没有字段映射的情况下填充的。但是,这是因为当未指定文档键的字段映射时,Azure 搜索会自动将“metadata_storage_path”映射到作为文档键的任何字段。这种行为是documented here

    如果您希望 PromotionId 像 ID 字段一样是文档路径,您可以将 PromotionId 字段映射的 sourceFieldName 更改为“metadata_storage_path”。如果您还想进行 base64 编码,您也可以将 fieldMappingFunction 添加到字段映射中。

    【讨论】:

    • 我将“sourceFieldName”的值从“ID”更改为“metadata_storage_path”,现在索引将完整的 Blob 文件路径显示为“PromotionId”的值。但是,如何显示元数据中标记的值?如果我删除映射,它将显示标记值,但不确定不使用“ID”映射是否会产生任何其他问题。
    • 如果您希望索引上的 PromotionId 字段映射到元数据中的 PromotionId 字段,那么您只需删除字段映射,因为这与将 sourceFieldName 和 targetFieldName 都设置为“促销 ID”。仅当您要映射具有不同名称的两个字段或应用字段映射函数(例如 base64)时才需要 FieldMappings。
    猜你喜欢
    • 2019-12-18
    • 2018-03-10
    • 1970-01-01
    • 1970-01-01
    • 2015-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-03
    相关资源
    最近更新 更多