Azure 搜索 blob 元数据拆分多个值并作为单独的值映射到索引器

问题描述 投票:0回答:1

我正在构建 Azure 搜索体验来索引和搜索 Blob 存储中的文件。 Blob 应用了元数据(我通过天蓝色函数应用元数据)。

我将元数据值映射到 FACETS 以优化搜索结果。

我的问题是关于同一元数据字段的多个值。例如,文档的“地理”为“伦敦”、“英国”和“欧洲”。

我们应该在什么时候将元数据拆分为不同的值?我不确定除了使用逗号或其他字符等分隔符之外,是否可以将多个值应用于元数据标记?

或者在索引器中 - 我们可以在某处使用“Split”函数将“London;UK;Europe”分成 3 个不同的值吗?

或者在最终用户体验中,我们是否应该拆分角色返回的 FACETS(这会给出错误的“总计”)

似乎我错过了一些对于非常典型的用例来说很容易的东西 - 具有多个值的元数据。

azure metadata facet azure-cognitive-search
1个回答
0
投票

您没有直接拆分功能并输出到不同的索引字段, 请参阅此处了解有关支持的功能的更多信息。

但是您可以通过指定

extractTokenAtPosition
delimiter
使用
position
函数提取某些单词。

了解更多关于

extractTokenAtPosition
功能的信息这里

以下是示例

fieldMappings
定义。

  "fieldMappings": [
        {
            "sourceFieldName":"metadata_message_from_email",
            "targetFieldName":"From_name",
            "mappingFunction": {
                "name": "extractTokenAtPosition",
                "parameters": {"delimiter":"@", "position":0}
            }
        },
        {
            "sourceFieldName":"metadata_message_from_email",
            "targetFieldName":"From_domain",
            "mappingFunction": {
                "name": "extractTokenAtPosition",
                "parameters": {"delimiter":"@", "position":1}
            }
        }
    ]

在这里,我使用分隔符

@
并从位置
0
提取名称并从位置
1
提取域,与将分隔符保留为
;
并给出要提取的位置的方式相同。

您可以看到下面的输出。

enter image description here

在您的情况下,下面是

fieldMappings
定义。

  "fieldMappings": [
    {
      "sourceFieldName": "metadata_geography_field",
      "targetFieldName": "Geography1",
      "mappingFunction": {
        "name": "extractTokenAtPosition",
        "parameters": {
          "delimiter": ";",
          "position": 0
        }
      }
    },
    {
      "sourceFieldName": "metadata_geography_field",
      "targetFieldName": "Geography2",
      "mappingFunction": {
        "name": "extractTokenAtPosition",
        "parameters": {
          "delimiter": ";",
          "position": 1
        }
      }
    },
            {
      "sourceFieldName": "metadata_geography_field",
      "targetFieldName": "Geography3",
      "mappingFunction": {
        "name": "extractTokenAtPosition",
        "parameters": {
          "delimiter": ";",
          "position": 2
        }
      }
    }
  ]
© www.soinside.com 2019 - 2024. All rights reserved.