azure-cognitive-search - 基于 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. '
解决方案
从错误消息中,您应该检查 base64string 的长度是否是 4 的倍数,并且 base64string 是否有效。
Base64 字符串仅由字符组成,'A'..'Z', 'a'..'z', '0'..'9', '+', '/'
并且通常在末尾填充最多两个'=',以使长度成为 4 的倍数。
您原来的 base64string 长度是 62,而不是 4 的倍数,您应该删除最后两个"="填充字符以使 base64string 有效。
推荐阅读
- java - 无法解析对应的jni函数
- python - ForeignKey dateField 结果无
- c# - 使用 BeginGetResponse 发送许多相同的 HttpWebRequest 时,有一小部分没有完成
- php - 使用 Laravel 将行数据转换为列数据
- angularjs - 角JS。如何在两个应用程序之间共享单个服务
- css - Angular 5 渐变背景图片
- php - PHP:从当前键的数组A中提取元素并推送到数组B
- reactjs - axios调用后,我应该如何更新前端?[我有两种方法]
- regex - 如何执行正则表达式 AND 操作?
- android - 为什么用户授予运行时权限后,onRequestPermissionsResult 中返回的 requestCode 为 1?