首页 > 解决方案 > MarkLogic 中过滤搜索结果的深度分页

问题描述

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

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

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

我知道过滤的搜索查询一开始并不高效,但这是一个单独的问题。

谢谢你的建议。

标签: marklogic

解决方案


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

cts:search(collection(), $myQuery, "filtered") ! xdmp:node-uri(.)

一旦你拉出了完整的 uris 列表,你就可以分页浏览 uris,并分批获取它们。

HTH!


推荐阅读