【发布时间】:2020-07-20 12:07:33
【问题描述】:
我正在将数据索引到由自定义技能生成的 Azure 搜索索引中。此自定义技能会生成复杂的数据,我希望将其保存到 Azure 搜索索引中。
源数据来自 blob 存储,我只能使用 REST API,而没有使用 .NET SDK 的非常可靠的论据。
当前代码
以下是我目前拥有的内容的简要概述。我无法更改索引的字段或自定义技能使用的端点生成的数据格式。
复杂数据
以下是自定义技能生成的复杂数据示例(正确的value/recordId/etc.格式):
{
"field1": 0.135412,
"field2": 0.123513,
"field3": 0.243655
}
自定义技能
这是创建所述数据的自定义技能:
{
"@odata.type": "#Microsoft.Skills.Custom.WebApiSkill",
"uri": "https://myfunction.azurewebsites.com/api,
"httpHeaders": {},
"httpMethod": "POST",
"timeout": "PT3M50S",
"batchSize": 1,
"degreeOfParallelism": 5,
"name": "MySkill",
"context": "/document/mycomplex
"inputs": [
{
"name": "text",
"source": "/document/content"
}
],
"outputs": [
{
"name": "field1",
"targetName": "field1"
},
{
"name": "field2",
"targetName": "field2"
},
{
"name": "field3",
"targetName": "field3"
}
]
}
我尝试了几种变体,特别是使用 ShaperSkill,每个字段作为输入,"targetName" 作为"mycomplex" 输出(使用适当的上下文)。
索引器
这是该技能的索引器输出字段映射:
{
"sourceFieldName": "/document/mycomplex,
"targetFieldName": "mycomplex"
}
我尝试了几种变体,例如"sourceFieldName": "/document/mycomplex/*。
搜索索引
这是目标索引字段:
{
"name": "mycomplex",
"type": "Edm.ComplexType",
"fields": [
{
"name": "field1",
"type": "Edm.Double",
"retrievable": true,
"filterable": true,
"sortable": true,
"facetable": false,
"searchable": false
},
{
"name": "field2",
"type": "Edm.Double",
"retrievable": true,
"filterable": true,
"sortable": true,
"facetable": false,
"searchable": false
},
{
"name": "field3",
"type": "Edm.Double",
"retrievable": true,
"filterable": true,
"sortable": true,
"facetable": false,
"searchable": false
}
]
}
结果
我的结果通常类似于Could not map output field 'mycomplex' to search index. Check your indexer's 'outputFieldMappings' property.。
【问题讨论】:
标签: azure azure-cognitive-search