【问题标题】:Filtering based on metadata_storage_path Azure Search基于 metadata_storage_path Azure 搜索的筛选
【发布时间】:2021-11-02 17:00:48
【问题描述】:

我想根据特定路径过滤结果,例如“/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. '

【问题讨论】:

  • 当我尝试解码该值时,我得到以下返回:https://azd]j"&"6%[6V&6vFW"Ɲ 这对我来说看起来不正确。
  • 我用随机字符修改了编码的 base 64 值,只是为了不把我真正的 blob url 放在这个问题中

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


【解决方案1】:

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

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

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

【讨论】:

  • 谢谢! == 是导致过滤器无法正常工作的原因
猜你喜欢
  • 2019-09-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-01
  • 1970-01-01
  • 2020-06-14
相关资源
最近更新 更多