MarkLogic中过滤搜索结果的深度分页

MarkLogic中过滤搜索结果的深度分页,marklogic,Marklogic,我需要实现一个节点web服务,该服务基于过滤的搜索查询,通过MarkLogic REST API读取多达1000000个文档,并将结果转换为存档 一次读取1000000个文档以及内容转换会导致超时。我的想法是使用分页。但是,对批量导出的过滤搜索结果进行分页有意义吗 我的理解是,过滤搜索不支持高效的深度分页,因为它每次都需要从头开始 我知道过滤搜索查询一开始并没有性能,但这是一个单独的问题 谢谢你的建议。如果你必须运行筛选,我会让搜索只返回uri。您可能仍然需要大量增加超时时间,但您不会冒破坏缓存

我需要实现一个节点web服务,该服务基于过滤的搜索查询,通过MarkLogic REST API读取多达1000000个文档,并将结果转换为存档

一次读取1000000个文档以及内容转换会导致超时。我的想法是使用分页。但是,对批量导出的过滤搜索结果进行分页有意义吗

我的理解是,过滤搜索不支持高效的深度分页,因为它每次都需要从头开始

我知道过滤搜索查询一开始并没有性能,但这是一个单独的问题


谢谢你的建议。

如果你必须运行筛选,我会让搜索只返回uri。您可能仍然需要大量增加超时时间,但您不会冒破坏缓存的风险,因为保存一百万个文档的内容实际上是不可能的。您可以调用自定义代码,该代码可能如下所示:

cts:search(collection(), $myQuery, "filtered") ! xdmp:node-uri(.)
一旦拉过完整的URI列表,就可以翻页浏览这些URI,并分批获取它们


你真的应该看看你是否可以不用过滤就能做到这一点。如果你真的需要过滤,那么分页就帮不了你。最好在一个长时间运行的查询中完成。在这种情况下,您可以尝试增加超时。但是,如果您可以让它不经过滤地工作,那么您可以选择:您可以分页、使用MLCP进行归档、使用CORB等。感谢您的见解和建议,@hunterhacker。感谢您的升级!