2015-03-31 125 views
1

我嘗試爲我的應用程序使用Azure搜索服務。我有一個像Azure搜索嵌套類索引

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

嵌套類,我無法找到一個方法索引產品不僅搜索產品名稱屬性也搜索ORDERNAME。

在Azure搜索中處理此問題的方法是什麼?

+0

看看下面doc- http://azure.microsoft.com/en-in/documentation/articles/search-get-started-dotnet/ – VIVEK 2015-03-31 07:44:10

+0

我已經看過這個鏈接。沒有這樣的線索可以回答我的問題。 – 2015-03-31 07:46:00

回答

1

你有沒有考慮過使用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" 
     ] 
     } 
    ] 
} 

或者您可以在反向產品 - 訂單關係,並有秩序的主要實體,它的所有屬性,包括產品名稱:

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

感謝您的回答。但是,我的訂單類包含地理位置屬性,我也想進行一些搜索。這就是爲什麼,這種方法不能滿足我的需求。做了一些研究之後,有一個扁平化的數據解決方法,但是這個解決方法僅適用於我假設的DocumentDB。 – 2015-03-31 13:15:05

+0

您是否可以反向產品 - 訂單關係並將訂單作爲主要實體及其所有屬性(包括產品名稱)? { 「name」:「ordertId」,「type」:「Edm.String」,「key」:true,「searchable」:false}, { 「name」:「orders」, 「fields」 {「name」:「productName」,「type」:「Edm.String」}, {「name」:「orderName」,「type」:「Edm.String」} ] } – Yahnoosh 2015-03-31 16:36:40