2017-02-06 1 views
3

MarkLogic v8을 사용하고 있습니다. 컨테이너 제한 (중첩) 용 Java API 사용

나는 요소 C 가치 X 만 문서를 반환하는 구조화 된 쿼리에 컨테이너 제약 조건을 적용하기 위해 노력하고 (요소 내에 중첩 B).

queryBuilder.containerConstraint()은 옵션 이름과 StructuredQueryDefinition에 대한 매개 변수를 취합니다. 내 옵션은 다음과 같습니다

<options xmlns='http://marklogic.com/appservices/search'> 
    <constraint name='language'> 
     <element name=\"name\" ns=\"\"/> 
    </constraint> 
</options> 
  1. "이름이"나는에 대해 참조 할 값을 포함하는 가장 안쪽의 요소 (C)의 이름입니다. 이 옵션이 어떻게 구성되어야 하는가, 아니면 가장 바깥 쪽 요소의 이름이 'name'이어야 하는가?

  2. 구조적 쿼리 정의 (containerConstraint())로 매개 변수로 받아 들여지는 방법은 어떻게해야합니까? 원시 XML을 작성해야합니까? 아니면 전달할 구조 메소드가 있습니까?

  3. 더 좋은 방법이 있나요? 나는 이미 학기 검색을하고 있으며, 문서 안의 속성으로 필터링 할 수 있어야합니다.

답변

3

은 내가 답을 찾은 것 같아 :

queryBuilder.wordConstraint("language", MY_LANGUAGE) 

이 할 나타납니다

<search:options 
     xmlns:search='http://marklogic.com/appservices/search'> 
    <search:constraint name='language'> 
     <search:word> 
      <search:element name='name' ns=''/> 
     </search:word> 
    </search:constraint> 
</search:options> 

그런 다음 워드 제약의 옵션이라고 다음과 같이

옵션이었다 내가 원했던 것.

+2

나에게 맞는 것 같습니다. http://docs.marklogic.com/javadoc/client/com/marklogic/client/query/StructuredQueryBuilder.html#containerQuery(com.marklogic.client.query.StructuredQueryBuilder.ContainerIndex)에 설명 된대로 containerQuery()를 사용할 수도 있습니다. , % 20com.marklogic.client.query.StructuredQueryDefinition) – ehennum