1

我正在开发一个从 alfresco 列出和搜索文档的应用程序。问题是 alfresco 每个查询最多可以返回 5000 条记录。但是我不希望我的应用程序列出所有文档,而是如果我可以在露天中实现分页,以便露天只返回每页 X 结果。我正在使用 Alfresco 4 企业版。

请提供任何帮助或建议。

更新(示例) 我编写了一个 web 脚本,它执行查询并返回所有满足条件的文档。可以说,找到了 5000 个条目。我想修改我的网络脚本,使网络脚本在第一页返回 100 个文档,第二页返回 100 个文档,依此类推...

这类似于使用 Limit BY 和 OFFSET 关键字。像这样的东西

4

2 回答 2

3

有两种方法可以查询SearchService(不包括 selectNodes/selectProperties 调用)。一种方法是将所有参数直接指定给查询方法。这具有简洁的优点,但缺点是您没有获得所有选项。

或者,您可以使用 SearchParameters对象进行查询。这使您可以完成简单查询所做的一切,甚至更多。其中还包括 setLimit、setSkipCount 和 setMaxItems,它们将允许您进行分页。

如果您的查询曾经是这样的:

searchService.query(StoreRef.STORE_REF_WORKSPACE_SPACESSTORE, "lucene", myQuery);

你会做类似的事情:

SearchParameters sp = new SearchParameters();
sp.addStore(StoreRef.STORE_REF_WORKSPACE_SPACESSTORE);
sp.setLanguage("lucene");
sp.setQuery(myQuery);
sp.setMaxItems(100);
sp.setSkipCount(900);
searchService.query(sp);
于 2012-07-16T13:18:34.197 回答
1

假设您已经用 Javascript 编写了 webscript,您可以使用该search.query()函数并将page属性添加到搜索定义中,如下所示:

var sort1 =   {
     column: "@{http://www.alfresco.org/model/content/1.0}modified",
     ascending: false   
};   

var sort2 =   {
     column: "@{http://www.alfresco.org/model/content/1.0}created",
     ascending: false   
};   

var paging =   {
     maxItems: 100,
     skipCount: 0   
};   

var def = {
     query: "cm:name:test*",
     store: "workspace://SpacesStore",
     language: "fts-alfresco",
     sort: [sort1, sort2],
     page: paging   
};   

var results = search.query(def);

您可以在此处找到更多信息:http ://wiki.alfresco.com/wiki/4.0_JavaScript_API#Search_API

于 2012-07-16T16:19:52.163 回答