2011-07-05 5 views
0

저는 Jackrabbit에 비교적 새로운입니다. 우리 애플리케이션에서는 repository.xml (Workspace.xml 등) 파일 내의 SearchIndex 섹션을 절대로 사용하지 않았습니다. JCR UUID 참조를 사용하여 항상 주어진 문서로 직접 이동하기 때문입니다. Jackrabbit v2.2.1오라클을 저장소로 사용 중입니다. 이제 우리는 문서 메타 데이터 기능을 사용하여 문서에 대한 컨텍스트 정보를 저장하여 메타 데이터를 사용하여 선택한 문서 집합을 검색 할 수 있기 때문에 요구 사항이 확장되고 있습니다.Jackrabbit XPath 문제

첫 번째 단계에서는 workspace.xml 파일에 기본 SearchIndex 섹션을 추가하고 JCR을 다시 시작했습니다.

내 로그 파일에서 이처럼 일련의 줄을 보았습니다. 그런 다음 작업 영역 아래에 인덱스 폴더가 생성 된 것을 보았습니다.

2011-07-05 15 : 04 : 01.724 INFO [웹 컨테이너 : 0] MultiIndex.java:1204 인덱싱 .../VFS : 인 metaData/21ee130e-978e-415f-bfd1-7aa03d91608c/VFS : 특성 (3500)

나는 이와 같은 폴더 구조를 가지고있다. 내가 JCR에서 문서를 만들 때, 나는 등 DOCTYPE, uploadedBy, contextValue 같은 태그 복잡한 XSD 유형입니다 문서의 일부로서 메타 데이터 정보를 원하시면, 다음 XPath 식 작동

/ (root) 
    /MyApp (sub-folder) 
     /documents/ (sub-folder) 
     /document-1.pdf (file) 
     /document-2.pdf (file) 
    /accounts/ (sub-folder) 
     /account.txt (file) 
     etc... 

를 지정합니다.

// JCR : 루트/VFS : metaData는 // * [VFS : 속성/VFS : DOCTYPE = 'TAX_DOCS']

내가 잘못된 값을 주면 대신 'TAX_DOCS'의 예를 들어, ' 세금 ', 그것은 훌륭한 문서를 반환하지 않습니다. 이렇게하면 메타 데이터가 예상대로 올바르게 저장되고 필터 프로세스에서 올바르게 사용됩니다.

이 쿼리의 문제점은 루트 폴더에서 검색을 시작하지만/MyApp/documents 하위 폴더에서만 검색하려고한다는 것입니다.

// JCR : 루트/MyApp를/문서 // VFS : metaData는 // * [VFS : 속성/VFS : DOCTYPE = 'TAX_DOCS']

그것은 아무 것도 반환하지 않습니다 그래서 난이 시도. 그럼에도 불구하고 나는 이것을 시도했지만 성공하지 못했습니다.

// JCR : 루트/MyApp를/문서 // * [VFS : metaData는/VFS : 속성/VFS : DOCTYPE = 'TAX_DOCS'] 내가 잘못 뭐하는 거지 그래서

? workspace.xml 구성에서 설정하거나 누락해야하는 것이 있습니까?

도움을 주시면 감사하겠습니다.

감사합니다, 잭

답변

2

드롭 이중 마지막 경로 구성 요소하지만 아무것도에서 인하 및 결과, 속성 값에 대한 @ 표기법을 사용

// 구조 전체를 검색
/jcr:root/MyApp/documents//*[vfs:attributes/@vfs:docType='TAX_DOCS'] 

/와 같은 즉각적인 자식 대신 하위 트리를 사용합니다. JCR 사양에서는 XPath 쿼리의 마지막 단계로 // 생성을 지원하는 구현 만 필요합니다.