0

次のように、Apache jackrabbit を使用してコンテンツ (html、画像、pdf) を保存しています。

    /folder1 (nt:unstructured)
        /content1(nt:unstructured)
           /file(nt:folder)
               /test.html(nt:file)
               /test.html-contents (nt:resource)

UI では、名前、ファイル サイズ、ファイル タイプなどで並べ替え可能なすべてのコンテンツを表示したいと考えています。これを実現するために、コンテンツ ノードを取得するために XPath を試しました。

  1. ノード名でソートできますか? 私はいくつかのようなことを試しました

    "/element(*,nt:base) @name の昇順"

しかし、それは機能しません。コンテンツの他のプロパティでは機能しますが、名前では機能しません。2. ファイルサイズでソートすることはできますか? ファイルはコンテンツの子ノードであるため、ファイル サイズに基づいてコンテンツをクエリする方法はありますか? (何らかの形で jcr:data).length? でクエリする)

回避策として、ノード イテレーターを介してすべてのコンテンツを取得し、メモリ内の並べ替え/ページ付けを行っています。これを行うためのより良い方法があることを望んでいました。

4

1 に答える 1

0

私の知る限り、名前によるソートは JCR Xpath クエリでは利用できません。ただし、SQL ではサポートされています。ただし、これは Jackrabbit のバージョンに依存する場合があります。

SQL を使用すると、上記のクエリは次のようになります。

select * from nt:base order by jcr:name ASC

リソースの長さによる並べ替えもサポートされていません。ソートの目的で、ノードに追加のプロパティを設定することを検討することをお勧めします。これは、Jackrabbit へのアップロードを処理するときに実行できます。

メモリ内でソートするノードの量によっては、大きな負担になる可能性があります。

于 2012-04-18T11:19:39.967 に答える