Azure 搜索嵌套 Class 索引

Azure Search Nested Class Indexing

我尝试为我的应用程序使用 Azure 搜索服务。我有一个嵌套的 class 喜欢

public class Products
{
    String ProductName {get;set;}
    List<Order> Order  {get;set;}
}
public class Order
{
    String Name {get;set;}
}

而且我找不到一种方法来索引产品,不仅搜索产品名称属性而且搜索订单名称。

在 Azure 搜索中如何处理这个问题?

您是否考虑过使用 Collection(Edm.String) 字段类型?查看以下索引定义是否适合您:

{
    "name": "products",  
    "fields": [
      {"name": "productId", "type": "Edm.String", "key": true, "searchable": false},
      {"name": "productName", "type": "Edm.String"},
      {"name": "orderNames", "type": "Collection(Edm.String)"}
    ]
}

然后您可以像这样索引您的文档:

{
   "value":[
      {
         "productId":"1",
         "productName":"product1",
         "orderNames":[
            "order1",
            "order2"
         ]
      },
      {
         "productId":"2",
         "productName":"product2",
         "orderNames":[
            "order1",
            "order2"
         ]
      }
   ]
}

或者,您可以反转 Product - Order 关系并将 Order 作为主要实体,其所有属性包括 ProductName:

{
   "name":"orders",
   "fields":[
      {
         "name":"ordertId",
         "type":"Edm.String",
         "key":true,
         "searchable":false
      },
      {
         "name":"productName",
         "type":"Edm.String"
      },
      {
         "name":"orderName",
         "type":"Edm.String"
      }
   ]
}