2016-09-22 7 views
-1

私はDocumentDbで少数のドキュメントを作成しました。私は、Azure検索サービスを使用して、単一ドキュメント内のマルチレベルまたは 親子オブジェクトを検索する方法を探しています。複数レベルのドキュメント検索でサポートされているモデルは何ですか?

あなたは誰でも私を助けることができます/任意のリンク。

+0

なぜDocumentDBのクエリ機能を使用しないのですか? –

+0

私は少し質問が混乱しています - あなたは標準的な質問について話しているのですか、またはサブ文書の内容でAzure検索を使用していますか?両方のドキュメントがたくさんあります。そして、あなたはドキュメントへのリンクを求めています。ドキュメンテーション要求の質問は話題にはなりませんが、例えば、「azure search documentdb」を簡単に検索すると、良いリソースが得られます。 –

+0

また、この質問は、あなたの以前の質問に非常に関連しています(または正確に同じです)。[ここ](https://stackoverflow.com/questions/39634568/unable-to-search-child-object-fields- in-azure-search-servicesdocumentdb)を参照してください。同じことについて複数の質問を投稿しないでください。この質問は閉鎖/削除する必要があります。 –

答えて

0

Azure Searchでドキュメントをフラット化する必要があるため、これを行うためにDocumentDBにクエリを作成する必要があります。はじめに、document hereがあります。これはAzure Searchでこれらのより複雑なデータ型をモデル化する方法についていくつかの情報を提供します。

また、私はDocumentDBでこの平坦化を行うことをお勧めします。これを行うには、ユーザー定義関数(UDF)がこれを行うのに最適な方法です。ここでは、配列を渡して "子"型のすべての項目を取得し、配列として戻すことができる例を示します。だから、

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

c.addressesはこのように見えた場合::

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

    return resultArray; 
} 

はその後DocumentDB以内に、あなたはこのようなクエリの何かをするだろう

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

UDFからの出力は以下のようになります:

["Toronto", "Seattle"] 

c Collectionデータ型のAzure Searchにロードされます。

関連する問題