是否可以使用从 SQL 生成的 file_data json 对象作为 Azure 搜索文档提取认知技能的输入?
Is it possible to use file_data json object generated from SQL as input for Azure Search Document Extraction cognitive skill?
是否可以使用从 SQL 视图获得的 file_data 输入来使用文档提取技能提取数据?简而言之,我想做的是从存储在 blob 中的文档中提取数据,并将其添加到我的索引中的可搜索字段中。
我已尝试 return JSON 对象作为从 SQL 视图检索数据的一部分。
(
select
top 1
'file' as [$type],
'.....') as [url]
for json path, WITHOUT_ARRAY_WRAPPER
) file_data
我也试过添加一个空的 'sasToken' 属性
我收到的错误是:
Required skill input was not in the expected format. Name: 'file_data', Source: '$(/document/file_data)', Error: 'Missing file reference object'
当我调试技能时 file_data 被转义 json
file_data "{ \"$type\":\"文件\",\"url\":\"https:.....\" }"
如果我复制 url 并取消转义正斜杠 \\/ 我可以在网络浏览器中打开文档。
如果我尝试计算 file_data 表达式(在调试器中)以尝试提取 url 部分,我没有得到任何结果
file_data expression
作为参考,文档提取技能可以接受的输入格式记录在此处:https://docs.microsoft.com/en-us/azure/search/cognitive-search-skill-document-extraction#skill-inputs
数据必须是 JSON 中的 BASE64 编码二进制内容,如下所示:
{
"$type": "file",
"data": "BASE64 encoded string of the file"
}
或者引用一个 blob,像这样:
{
"$type": "file",
"url": "URL to download file",
"sasToken": "OPTIONAL: SAS token for authentication if the URL provided is for a file in blob storage"
}
所以您的 JSON 具有正确的形状,这不是问题(并且不需要包含空标记)。问题是 JSON 被转义了,如果您尝试从 SQL 端构建对象,恐怕这是不可避免的。
幸运的是,还有另一种方法,即使用整形器技能从 Azure 认知搜索端的简单类型创建对象。
首先,从 SQL 端发出您需要的 URL 数据作为一个简单的字符串:
(select top 1 '.....') as [url])
根据您的具体情况进行调整,以便您将 url 作为进入索引器的数据中的单个字符串。
然后,将塑形技能添加到您的技能组合中,如下所示:
{
"@odata.type": "#Microsoft.Skills.Util.ShaperSkill",
"context": "/document",
"inputs": [
{
"name": "$type",
"source": "=\"file\""
},
{
"name": "url",
"source": "/document/url"
}
],
"outputs": [
{
"name": "output",
"targetName": "file_data"
}
]
}
这需要 url
并从中创建一个正确形状的 file_data
对象和 $type
的文字字符串。然后,您可以将其与文档提取技能一起使用。
是否可以使用从 SQL 视图获得的 file_data 输入来使用文档提取技能提取数据?简而言之,我想做的是从存储在 blob 中的文档中提取数据,并将其添加到我的索引中的可搜索字段中。
我已尝试 return JSON 对象作为从 SQL 视图检索数据的一部分。
(
select
top 1
'file' as [$type],
'.....') as [url]
for json path, WITHOUT_ARRAY_WRAPPER
) file_data
我也试过添加一个空的 'sasToken' 属性
我收到的错误是:
Required skill input was not in the expected format. Name: 'file_data', Source: '$(/document/file_data)', Error: 'Missing file reference object'
当我调试技能时 file_data 被转义 json
file_data "{ \"$type\":\"文件\",\"url\":\"https:.....\" }"
如果我复制 url 并取消转义正斜杠 \\/ 我可以在网络浏览器中打开文档。
如果我尝试计算 file_data 表达式(在调试器中)以尝试提取 url 部分,我没有得到任何结果
file_data expression
作为参考,文档提取技能可以接受的输入格式记录在此处:https://docs.microsoft.com/en-us/azure/search/cognitive-search-skill-document-extraction#skill-inputs
数据必须是 JSON 中的 BASE64 编码二进制内容,如下所示:
{
"$type": "file",
"data": "BASE64 encoded string of the file"
}
或者引用一个 blob,像这样:
{
"$type": "file",
"url": "URL to download file",
"sasToken": "OPTIONAL: SAS token for authentication if the URL provided is for a file in blob storage"
}
所以您的 JSON 具有正确的形状,这不是问题(并且不需要包含空标记)。问题是 JSON 被转义了,如果您尝试从 SQL 端构建对象,恐怕这是不可避免的。
幸运的是,还有另一种方法,即使用整形器技能从 Azure 认知搜索端的简单类型创建对象。
首先,从 SQL 端发出您需要的 URL 数据作为一个简单的字符串:
(select top 1 '.....') as [url])
根据您的具体情况进行调整,以便您将 url 作为进入索引器的数据中的单个字符串。
然后,将塑形技能添加到您的技能组合中,如下所示:
{
"@odata.type": "#Microsoft.Skills.Util.ShaperSkill",
"context": "/document",
"inputs": [
{
"name": "$type",
"source": "=\"file\""
},
{
"name": "url",
"source": "/document/url"
}
],
"outputs": [
{
"name": "output",
"targetName": "file_data"
}
]
}
这需要 url
并从中创建一个正确形状的 file_data
对象和 $type
的文字字符串。然后,您可以将其与文档提取技能一起使用。