2016-11-17 23 views
0

保存したバージョンのjackrabbitリポジトリを照会したいと思います。抜粋と親の識別子を返すためのJCRクエリ

私のリポジトリには、次のようになります。XPathクエリ後

JCR repo structure

がうまく機能:テンプレートノード://element(*, nt:frozenNode)[jcr:contains(., '" + keyword + "') ]/rep:excerpt(.)とRowオブジェクトからは、私はデで見つけ抜粋得ることができます返された「ドを:コンテンツ」プロパティ(これはフルテキストインデックス可能です私は自分のルーケン設定を持っています)。

問題はありますが、クエリーで見つかったパスのみが返されるため、どのような抜粋要素が見つかったのかを知るにはどのようにすればよいのでしょうか(/ jcr:system/jcr:versionStorage/95/c8/3e/95c83efc-8441-4017- b3af-ae7be49f07e5/1.0/jcr:frozenNode/de:template)とその抜粋。

したがって、Jackrabbitに格納されているように、の識別子を知りたいと思います。しかし、これはその悪いバージョンのたくさんの時間がかかりすぎると

Row row = (Row) rows.next(); 
Node node = row.getNode(); 
Node frozenNode = node.getParent(); 
Node versionNumber = frozenNode.getParent(); 
String versionId = versionNumber.getIdentifier(); 

:その識別子をversionHistoryに達したとき:

は、私は、NTまで親ノードを取得することにより、同様に、このためのソリューションを持っていますパフォーマンスのために。それは親ノードは、クエリが実行された後にフェッチする必要がないようなクエリでは、このバージョンIDを、含めることができるかどう

Profiling JCR Query and getting nodes

したがって、私は疑問に思います。

答えて

0

おそらくXPathクエリを使用することはできません。しかし、あなたはjoinを使ってSQL2を使ってそれを行うことができます:

SELECT n.*, excerpt(n), v.[jcr:uuid] 
FROM [nt:frozenNode] AS n 
INNER JOIN [nt:version] AS v ON ISDESCENDANTNODE(n,v) 
WHERE contains(n.*,'Adobe') 
関連する問題