首页 > 解决方案 > 基于 metadata_storage_path Azure 搜索的筛选

问题描述

我想根据特定路径过滤结果,例如“/container/folder1”,但是我使用 metadata_storage_path 作为我的文档密钥,因此默认情况下它被加密为 base64。
我试图根据加密值创建过滤器,但这似乎不起作用,例如 "filter": "metadata_storage_path eq 'aHR0cHM6Ly9hemRdasb2IuYmxvYi5jb3JdpbmRvd3sL3NlYXJjaddkZXIsad=='",. 我想这是因为 base64 编码路径包含的特殊字符。有没有办法根据这个 base 64 编码的元数据路径进行过滤?我也尝试过使用 base64decode 函数,并使用字段映射将元数据存储路径映射到解码字段,但每次重新运行索引器时都会返回错误,看起来文档键实际上无法解码。任何帮助,将不胜感激。

使用 base64decode 函数时出现的错误。

'metadata_storage_path': The input is not a valid Base-64 string as it contains a non-base 64 character, more than two padding characters, or an illegal character among the padding characters. '

标签: azure-cognitive-searchazure-search-.net-sdk

解决方案


从错误消息中,您应该检查 base64string 的长度是否是 4 的倍数,并且 base64string 是否有效。

Base64 字符串仅由字符组成,'A'..'Z', 'a'..'z', '0'..'9', '+', '/'并且通常在末尾填充最多两个'=',以使长度成为 4 的倍数。

您原来的 base64string 长度是 62,而不是 4 的倍数,您应该删除最后两个"="填充字符以使 base64string 有效。


推荐阅读