marklogic - MarkLogic 中过滤搜索结果的深度分页
问题描述
我需要实现一个 Node Web 服务,该服务基于过滤的搜索查询通过 MarkLogic REST API 读取多达 1,000,000 个文档,并将结果转换为存档。
一次读取 1,000,000 个文档以及内容转换会导致超时。我的想法是使用分页。但是对批量导出的过滤搜索结果进行分页有意义吗?
我的理解是过滤搜索不支持有效的深度分页,因为它每次都需要从头开始。
我知道过滤的搜索查询一开始并不高效,但这是一个单独的问题。
谢谢你的建议。
解决方案
如果您必须运行过滤,我只会让搜索返回 uri。您可能仍然需要大量增加超时,但您不会冒着缓存的风险,因为保存 100 万个文档的内容实际上是不可能的。您可以调用自定义代码,如下所示:
cts:search(collection(), $myQuery, "filtered") ! xdmp:node-uri(.)
一旦你拉出了完整的 uris 列表,你就可以分页浏览 uris,并分批获取它们。
HTH!
推荐阅读
- visual-studio-code - 如何阻止 VScode 在我的源文件夹中创建 .vscode 文件夹
- sql - 之前的累积和,之后的累积和
- python - 有没有办法在使用 ** 运算符时即时对变量进行类型转换?
- python - 有什么方法可以使用python以递增顺序在文件中添加数据
- npm - 当我尝试使用 npm 将 node-sass 作为 package.json 脚本运行时,为什么会收到错误消息?
- flutter - 在 audioplayers dart 包中出现编译时错误
- ios - SwiftUI - 在嵌套视图上使用不同的转换
- flutter - Flutter 中的动画浮动操作按钮
- excel - 动态字段编号 - Excel VBA
- cmake - CMake Visual Studio 工作流程