Azure搜索解码索引的base64文件内容

时间:2018-05-18 01:58:52

标签: azure base64 decode azure-search indexer

我正在尝试在包含大量.htm文件的blob容器上使用Azure搜索。这些文件中的每一个都完全用base64编码,并带有填充。其中一个文件可能是“example.htm”,如果你打开它,你会看到:

//This decodes to html
PCEtLSBBIHNlZ21lbnQgb2YgYSBzd2VldCBib2R5IC0tPg0KPGRpdiBjbGFzcz0iYS1uaWNlLWNsYXNzIiBpZD0iaW1tYS1pZCI+DQoJPHA+Q2F0J3MgYXJlIGhhcmQgdG8gZGVjb2RlPC9wPg0KPC9kaXY+

我尝试在索引器中添加字段映射来解码它。如果我设置“useHttpServerUtilityUrlTokenDecode”:true 然后我得到“错误将映射函数'base64Decode'应用到字段'NAME':数组不能为空。\ r \ nParameter name:bytes”。< / em>,如果我将其设置为 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 Search API完成此操作,如果是这样的话,或者在上传到Azure存储中之前是否真的说不同。

我如何为我的索引解码这些文件的内容,以便搜索结果不会返回base64 stings?

1 个答案:

答案 0 :(得分:0)

如果我理解你的情况,你的blob只包含base64编码的文本。如果是这样,您应该使用text解析模式按原样保留文本,以便对其进行解码。见Indexing plain text

修改索引器以使用文本解析模式后,不要忘记reset到索引器,以便它从头开始索引blob。这是必要的,因为之前索引器跳过了blob,因为你设置了"maxFailedItems" : -1