在Azure搜索中合并blob

时间:2018-05-22 08:56:54

标签: azure-search

是否可以将多个blob合并到一个Azure搜索记录中?

完整场景:我们在cosmosDB中存储了以json存储的公司列表及其在blob存储中的相关文档(.docx / pdf)。公司可以拥有多个文档,大小不等,最大可达20 MB,文档数量没有上限。我们如何合并所有文档的内容并推入Azure搜索索引的“内容”字段,以便我们可以对来自cosmos和blob的公司数据执行全文搜索。

我已经研究过https://www.lytzen.name/2017/01/30/combine-documents-with-other-data-in.html - 本教程中的场景讨论在候选数据和CV之间存在一对一的关系。在我们的案例中,公司与其文件之间存在一对多的关系。

任何帮助/指示都将不胜感激。

由于

3 个答案:

答案 0 :(得分:0)

Azure搜索Blob Indexer将每个blob映射到搜索索引1:1中的文档。目前,没有办法将多个blob的内容自动合并到一个文档中。但是,您始终可以编写执行此操作的客户端应用程序,并使用我们的SDKREST API.将聚合内容推送到Azure搜索索引。

我很想知道有关情景的更多信息。每个公司的索引中都有一个文档,您将无法从blob存储中搜索单个文档。那是什么?

答案 1 :(得分:0)

只要您尝试从多个字段“汇编”文档而不是合并到单个字段中,就可以将来自不同数据源的数据合并到搜索索引中的单个文档中。
请注意:

  1. 所有数据源都同意文档密钥是什么。默认情况下,密钥是blob路径。由于路径在blob中是唯一的,因此需要就密钥达成一致意味着您需要在“辅助”Blob上设置元数据属性,使其与“主要”blob相关联。

  2. 您无法使用索引器将多个源文档合并到单个索引字段中,例如m.getColumns(*IntArray(35) { count + it }) 。可能,这不是您在Cosmos DB中存储的JSON元数据所需要的,因为您可能希望将该元数据捕获到其自己的字段集中。要合并到content字段,您需要编写自己的合并逻辑,如上一个响应中所述。

  3. 似乎使你的场景“正常工作”的基本原语是集合合并 - 你不会将content建模为字符串,而是作为字符串的集合,其中每个元素都从一个blob中提取出来。请随意向我们的UserVoice添加收集合并功能的建议。

答案 2 :(得分:0)

我找到的一个解决方案是将文档压缩为ZIP并将ZIP文件传递给Azure搜索索引器。这个解决方案的唯一问题是我必须为ZIP创建添加另一个处理步骤,并为ZIP保留额外的存储成本