2016-09-22 2 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를 사용하면 문서를 병합해야하므로 문서 작성에 도움이되는 쿼리를 만들면됩니다. 시작하려면 document here이 있으며 Azure Search에서 이러한 복잡한 데이터 유형을 모델링하는 방법에 대한 정보를 얻을 수 있습니다.

또한 DocumentDB에서이 병합을 선호합니다. 이를 위해 사용자 정의 함수 (UDF)가이를 수행하는 좋은 방법입니다. 다음은 Array를 전달하고 "child"유형의 모든 항목을 가져 와서 Array로 다시 전달할 수있게 해주는 예제입니다.

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

는 UDF의 출력은 다음과 같습니다 c.addresses이 닮은 경우에 따라서

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

:

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

    return resultArray; 
} 

그런 다음 DocumentDB 내에서,이 같은 쿼리 뭔가를 할 것 :

["Toronto", "Seattle"] 

Collection 데이터 형식의 Azure Search에로드됩니다.