2016-09-22 64 views
-1

我已經在DocumentDb中創建了幾個文檔,並且正在尋找如何使用Azure搜索服務在單個文檔中搜索多級或 父子對象。什麼是支持多級文檔搜索的模型?

你能幫我任何人/任何鏈接。

+0

爲什麼不使用DocumentDB的查詢功能? –

+0

我對這個問題有點困惑 - 你在談論標準查詢還是關於在子文檔內容中使用Azure搜索?兩者都有大量的文檔。並且您要求提供文檔鏈接;文檔請求的問題是無關緊要的,但是例如,對「azure搜索documentdb」的簡單搜索將帶您獲得良好的資源。 –

+0

另外:這個問題看起來非常相關(或完全相同)您先前提出的問題,[這裏](https://stackoverflow.com/questions/39634568/unable-to-search-child-object-fields-在-蔚搜索servicesdocumentdb)。請不要針對同一件事發布多個問題。這個問題應該被關閉/刪除。 –

回答

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"] 

其中c然後將其加載到Collection數據類型中的Azure搜索中。

相關問題