我正在尝试在包含大量.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?
答案 0 :(得分:0)
如果我理解你的情况,你的blob只包含base64编码的文本。如果是这样,您应该使用text
解析模式按原样保留文本,以便对其进行解码。见Indexing plain text。
修改索引器以使用文本解析模式后,不要忘记reset到索引器,以便它从头开始索引blob。这是必要的,因为之前索引器跳过了blob,因为你设置了"maxFailedItems" : -1
。