我正在构建 Azure 搜索体验来索引和搜索 Blob 存储中的文件。 Blob 应用了元数据(我通过天蓝色函数应用元数据)。
我将元数据值映射到 FACETS 以优化搜索结果。
我的问题是关于同一元数据字段的多个值。例如,文档的“地理”为“伦敦”、“英国”和“欧洲”。
我们应该在什么时候将元数据拆分为不同的值?我不确定除了使用逗号或其他字符等分隔符之外,是否可以将多个值应用于元数据标记?
或者在索引器中 - 我们可以在某处使用“Split”函数将“London;UK;Europe”分成 3 个不同的值吗?
或者在最终用户体验中,我们是否应该拆分角色返回的 FACETS(这会给出错误的“总计”)
似乎我错过了一些对于非常典型的用例来说很容易的东西 - 具有多个值的元数据。
您没有直接拆分功能并输出到不同的索引字段, 请参阅此处了解有关支持的功能的更多信息。
但是您可以通过指定
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
提取域,与将分隔符保留为 ;
并给出要提取的位置的方式相同。
您可以看到下面的输出。
在您的情况下,下面是
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
}
}
}
]