【问题标题】:Azure Search - Searching in Specific FolderAzure 搜索 - 在特定文件夹中搜索
【发布时间】:2018-04-04 05:52:16
【问题描述】:

我只想搜索我的 Azure Blob 容器中的特定文件夹。

我正在使用 Azure 搜索服务。

例如,我有以下结构:

我希望搜索“Cli01”文件夹中关于客户端 01 的所有文件。

谢谢

【问题讨论】:

  • 为了将来参考,我建议让问题不那么模棱两可/更详细,因为您确实有 2 个问题/问题需要处理(我认为我们已经在答案 cmets 中充实了这些问题)。跨度>

标签: azure azure-cognitive-search


【解决方案1】:

您可以在创建数据源时通过query 参数做您想做的事情。

{
"name" : "blob-datasource",
"type" : "azureblob",
"credentials" : { "connectionString" : "DefaultEndpointsProtocol=https;AccountName=<account name>;AccountKey=<account key>;" },
"container" : { "name" : "my-container", "query" : "<optional-virtual-directory-name>" }
}

这是您要查看的相关文档:https://docs.microsoft.com/en-us/azure/search/search-howto-indexing-azure-blob-storage

【讨论】:

  • 是否可以为我系统中的每个客户端创建一个主索引、一个数据源和一个索引器?
  • 你可以有 1 个索引。您的索引可能包含一个名为“clientId”的字段,并且您的 blob 需要有一个元数据来指示该文档的 clientId 需要是什么。但是您仍然需要单独的数据源和索引器,它们将从特定目录中提取数据并写入该目标索引。索引器将通过查看您之前添加的元数据找出 clientId。
  • 考虑到这一点,您可以在没有多个索引器/数据源的情况下简单地实现您的方案。您有 1 个索引,其中包含一个名为 clientId 的字段。然后确保您添加的任何 blob(无论哪个目录)都有一个元数据字段,该字段说明该文档属于哪个 clientId。然后,您可以简单地拥有 1 个包含整个容器的数据源和 1 个使用该数据源的索引器。索引器需要通过字段映射使用元数据字段来填充 clientId 字段。
  • 嗨,阿文德。首先,谢谢。但问题是,一旦我的所有内容都动态上传到容器中,如何将此字段添加到我的索引中?我看到很多关于如何将字段添加到索引的示例,但这些都是使用 CosmoDB 或 SQL。这不是我的情况,我使用的是 Blob 存储。
  • 如果您这样做,那么您可以发出类似 POST /indexes//docs/search?api-version= { "search": "content: AND clientId:", "queryType": "full", "searchMode": "all" } 同时搜索内容和 clientId。您可以选择搜索内容,然后过滤 clientId。我建议查看docs.microsoft.com/en-us/azure/search/search-query-overview 并点击那里的任何链接
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-08
相关资源
最近更新 更多