2011-07-05 8 views
0

私はJackrabbitに比較的新しいです。このアプリケーションでは、JCR UUIDリファレンスを使用して、常に特定のドキュメントに直接移動するため、repository.xml内のSearchIndexセクション(workspace.xmlなど)ファイルを有効にすることはありませんでした。私たちは、Jackrabbit v2.2.1Oracleをリポジトリとして使用しています。ドキュメントのメタデータ機能を使用してドキュメントに関するコンテキスト情報を格納し、選択したドキュメントセットを取得するためにメタデータを使用できるようにするため、要件が拡大しています。Jackrabbit XPath Issue

最初の手順として、デフォルトのSearchIndexセクションをworkspace.xmlファイルに追加し、JCRを再起動しました。

ログファイルにこのような行が見えました。次に、ワークスペース領域の下にインデックスフォルダが作成されていました。

2011-07-05 15:04:01.724 INFO [Webコンテナ:0] MultiIndex.java:1204インデックス作成.../VFS:メタデータ/ 21ee130e-978e-415f-bfd1-7aa03d91​​608c/VFS:属性(3500 )

私はこのようなフォルダ構造を持っています。私はJCRで文書を作成するときに、私は次のXPath式が機能

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

など、DOCTYPE、uploadedByのようなタグを使用して、複雑なXSDデータ型である文書の一部としてcontextValueをメタデータ情報を指定します。

// JCR:ルート/ VFS:メタデータ// * [VFS:属性/ VFS:DOCTYPE = 'TAX_DOCS']

私は間違った値を与える場合は、例えば代わり​​に 'TAX_DOCS' は ' TAX '、期待どおりの文書は返されません。これは、メタデータが正常に正しく格納され、フィルタ処理で正しく使用されていることを証明します。

このクエリの問題は、ルートフォルダからの検索を開始するが、/ MyApp/documentsサブフォルダのみから検索したいということです。だから私はこれを試してみました:

// JCR:ルート/ MyAppに/文書// VFS:メタデータ// * [VFS:属性/ VFS:DOCTYPE = 'TAX_DOCS']

それは何も返しません。それから私はこれも試しましたが、成功しませんでした。

// JCR:ルート/ MyAppに/文書// * [VFS:メタデータ/ VFS:属性/ VFS:DOCTYPE = 'TAX_DOCS']

は、だから私は間違って何をやっていますか? workspace.xmlの設定に何か設定や欠落が必要ですか?

何か助けていただければ幸いです。

おかげで、ジャック・

答えて

2

ドロップダブル最後のパスコンポーネント以外のものから大幅に削減し、その結果、属性値のため、@表記を使用します。

//構築物が全体を探し
/jcr:root/MyApp/documents//*[vfs:attributes/@vfs:docType='TAX_DOCS'] 

/のような直接的な子供の代わりに、サブツリーを使用します。 JCR仕様では、XPathクエリの最後のステップとして//構築をサポートする実装のみが必要です。