我正在使用JsonDocumentManager通过提供StructuredQuery定义在marklogic中进行搜索。因此我得到一个DocumentPage,默认为50条记录(JsonDocumentManager中的页面长度默认值)。但我想一次性检索所有文件?
我可以在这里看到两个选项来解决这个问题,或者通过将页面长度增加到我提供的条件不能超出的限制,或者通过在循环中的jsonDocumentManager.search(queryDefinition, pageOffset)
中提供页面偏移来直到documentPage.isLastPage返回true
有人可以告诉我更多选项吗?是否有任何分页参数可以切换为false以禁止marklogic进行分页搜索?
答案 0 :(得分:2)
如@grtjn所述,最好分页,如果可以并行运行请求,则更快。因此,Java API没有标记来获取所有结果。它构建的层也不是:REST API和搜索:搜索API。
那些构建的层,cts:search,使用服务器端的延迟评估来高效地分页,同时它似乎可以获得所有结果。话虽如此,如果您必须拥有除已知的其他选项之外的其他选项,请考虑创建Resource extension并直接调用cts:search API。
对于它的价值,在MarkLogic 9中我们将提供Data Movement SDK,它将在客户端为您进行所有分页和并行化。它专为需要导出或操作大型数据集的长期运行数据移动应用程序而设计。如果您感兴趣,请考虑加入早期访问计划,您可以尝试一下。