什么是多级文档搜索支持的模型?

时间:2016-09-22 13:35:36

标签: azure azure-cosmosdb azure-search

我在DocumentDb中创建了一些文档,我正在寻找如何搜索多级或 使用Azure搜索服务在单个文档中创建父子对象。

你能帮助我/任何链接。

1 个答案:

答案 0 :(得分:0)

Azure搜索需要展平文档,因此您需要在DocumentDB中创建一个查询来帮助您完成此操作。首先,有一个document here,它将为您提供有关如何在Azure搜索中对这些更复杂的数据类型建模的信息。

另外,我更喜欢在DocumentDB中执行此展平。为此,用户定义函数(UDF)是一种很好的方法。下面是一个示例,它允许您传入一个数组并获取类型" child"的所有项目。并将其作为数组传回。

function convertToArray (data, child) { 
    var resultArray = [];
    for (var i = 0; i < data.length; i++)
    {
        resultArray.push(data[i][child]); 
    }

    return resultArray;
}

然后在DocumentDB中,你会做一个像这样的查询:

SELECT 
c.userName, 
udf.convertToArray(c.addresses, "city") as City
FROM c

所以如果c.addresses看起来像这样:

[
    {
      "city": "Toronto",
      "country": "Canada"
    },
    {
      "city": "Seattle",
      "country": "USA"
    }
  ]

UDF的输出是:

["Toronto", "Seattle"]

然后可以以Collection数据类型加载到Azure Search中。