0

我们使用 apache jackrabbit 来存储内容(html、image、pdfs),如下所示:

    /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 回答