首页 > 解决方案 > 使用 blob 名称筛选 Azure blob 搜索

问题描述

我有一个存储帐户,其中包含命名为生成虚拟层次结构的 blob:

Data/2016/image01.jpg
   w=640
   h=480
Data/2017/image02.jpg
   w=320
   h=240
...

所有 blob 都包含包含图像宽度(w)和高度(h)的元数据字段

我已经实现了一个搜索服务并将 blob 元数据添加为可搜索字段。

这可以很好地搜索所有 blob 并按 w 或 h 过滤:

search=*&$filter=(w eq 640)

我也对 blob 名称感到困惑。在容器之后的 AFAIK,所有 blob 都以平面形式存储,并且虚拟层次结构(如浏览 blob 时在 Azure 门户中所见)只是通过在 blob 名称中添加“/”而获得的。但是,当您获取metadata_storage_name它时,它只返回名称的最后一段而不是完整路径。

如何按 blob 名称进一步过滤?例如,仅返回名称中包含“2017”且 w==640 的 blob

编辑: 我部分解决了我的问题。原来我没有添加$queryType=fullqueryType=full我的搜索中。所以这样的事情会起作用: queryType=full&search=image02*&$filter=(w eq 640) 但仍然无法在搜索中包含blob“路径”。

标签: azureazure-blob-storageazure-cognitive-search

解决方案


还有包含完整路径的metadata_storage_path字段。不幸的是,它还包含整个 blob 存储 URL。

metadata_storage_path (Edm.String) - blob 的完整 URI,包括存储帐户。例如,https://myaccount.blob.core.windows.net/my-container/my-folder/subfolder/resume.pdf


推荐阅读