【发布时间】:2018-10-28 09:21:29
【问题描述】:
我正在尝试在包含大量 .htm 文件的 blob 容器上使用 Azure 搜索。这些文件中的每一个都完全用base64编码并带有填充。这些文件之一可能是“example.htm”,如果您打开它,您会看到:
//This decodes to html
PCEtLSBBIHNlZ21lbnQgb2YgYSBzd2VldCBib2R5IC0tPg0KPGRpdiBjbGFzcz0iYS1uaWNlLWNsYXNzIiBpZD0iaW1tYS1pZCI+DQoJPHA+Q2F0J3MgYXJlIGhhcmQgdG8gZGVjb2RlPC9wPg0KPC9kaXY+
我试图在我的索引器中添加一个字段映射来解码它。如果我设置 "useHttpServerUtilityUrlTokenDecode": true 然后我得到 “将映射函数 'base64Decode' 应用到字段 'NAME' 时出错:数组不能为空。\r\n参数名称:字节”。 ,如果我将其设置为 false 则即使它说“成功”,也不会索引任何文件。
{
"name":"demoindexer",
"dataSourceName" : "demodata",
"targetIndexName" : "demoindex",
"fieldMappings" : [
{
"sourceFieldName" : "content",
"targetFieldName" : "content",
"mappingFunction" :
{ "name" : "base64Decode", "parameters" : {
"useHttpServerUtilityUrlTokenDecode" : false } }
}
],
"parameters":
{
"maxFailedItems":-1,
"maxFailedItemsPerBatch":-1
}
}
似乎一条线索可能是 Azure 的字段映射页面上的一条注释,其中指出“对于带填充的 Base64 编码,使用 URL 安全字符并在库编码后通过额外处理删除填充”。我不确定这是否可以通过 Azure 搜索 API 来完成,如果可以的话如何去做,或者它是否只是在上传到 Azure 存储之前以不同的方式编码。
我将如何为我的索引解码这些文件的内容,以便搜索结果不会返回 base64 字符串?
【问题讨论】:
标签: azure base64 decode azure-cognitive-search indexer