2017-01-03 14 views
1

Adobe CQ5/Adobe Experience Manager에서 JCR-SQL2, JCR-SQL 또는 QueryBuilder를 사용하여 동일한 이름의 형제 (SNS)를 찾을 수 있습니까? 다음과 같이 정의된다Jackrabbit에 같은 이름의 형제를 쿼리하는 방법

if(node.getIndex() > 1) { 
    // this node is matching the SNS criteria 
} 

SNS를 : 나는 전체 저장소 (느리고 장기 실행 작업을) 통과하지 않고 다음과 같은 기준을 갖는 쿼리와 그 노드를 일치하기 위해 노력하고있어

/a/b/c 
/a/b/c[2] 
/a/b/c[3] 

/a/b[2]/c[2] 
/a/b/c[3] 

/a/d/f 
/a/d/f[2] 

/a/b/c [3],/a/b [2]/c [2],/a/b/c [3] ,/a/d/f [2].

답변

2

어도비에서 이것에 대한 유용한 기사를 게시 :

https://helpx.adobe.com/experience-manager/kb/find-sns-nodes.html

편집 : 이것에 대한 하나 개의 쿼리는 다음과 같이 할 수있다 :

SELECT [jcr:path] FROM [nt:base] WHERE ISDESCENDANTNODE('/') AND [jcr:path] like '%\]'

는 생각은 오크 쿼리가 될 것입니다 SNS 해결 로직을 통해 마이그레이션 된 인덱싱 된 노드를 찾을 수 있습니다. 이 이름은 위의 쿼리를 통해 선택할 수있는 이름 (URI 경로)에 ]을 포함합니다.

이름에 "]가있는 많은 시스템 노드가 있으므로주의하여이 쿼리를 사용하십시오. 이것은 의도적으로 설계된 것입니다.

더 나은 필터링을 위해 [nt:base]을 기타 관련 떡갈 나무 색인으로 변경할 수 있습니다.

HTH

+0

이 기사는 알고 있지만 쿼리가있는 대체 솔루션이 있기를 바랍니다. 저장소의 크기가 TB 인 경우, 그러한 통과 솔루션은 매우 치명적인 작업입니다. – d33t

+0

이것이 킬러가 되겠지만, 그러한 결과는 쿼리로 얻을 수 없으며 어떤 인덱스로도 이익을 얻을 수 없기 때문에 순회가 유일한 옵션 일 수 있습니다. 우리는 하나의 유틸리티로 작성하고 계속해서 보고서를 작성할 수 있었고 그 중 하나 였기 때문에 괜찮 았습니다. 또한 마이 그 레이션 전에 중복 형제를 표시하기 위해 이전 시스템에 리스너를 작성했습니다. HTH –

+0

최근이 솔루션을 찾았습니다. 도움을 주셔서 감사합니다! – d33t