You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MarkLogic Rest API:如何基于文档大小约束搜索范围?

在MarkLogic REST API中按文档大小过滤搜索结果

要过滤掉小于1MB的文档,你可以利用MarkLogic内置的xdmp:document-size()函数获取文档字节数,结合REST API的查询语法实现大小约束。以下是具体实现方式:

1. (推荐)预先创建文档大小范围索引

为了提升查询性能,尤其是在海量文档场景下,建议先创建文档大小的范围索引:

  • 登录MarkLogic管理界面,进入目标数据库的范围索引配置页
  • 添加新索引:
    • 类型选择xs:unsignedLong
    • 表达式填写xdmp:document-size()
    • 命名空间留空(内置函数无需命名空间)

2. 构造带大小过滤的搜索请求

方式一:JSON结构化查询(POST请求)

向/v1/search端点发送POST请求,请求体结合关键词搜索与大小范围过滤:

{
  "query": {
    "and-query": [
      {
        "word-query": {
          "text": ["你的搜索关键词"],
          "options": ["case-insensitive"]
        }
      },
      {
        "range-query": {
          "range-operator": "GT",
          "value": ["1048576"],
          "type": "xs:unsignedLong",
          "expression": "xdmp:document-size()"
        }
      }
    ]
  }
}

注:1048576是1MB对应的字节数(1024*1024),GT表示“大于”,这样会返回所有包含关键词且大小超过1MB的文档。

方式二:使用预定义约束简化查询

如果已经创建了范围索引,可以先定义搜索选项(保存为XML文件,通过/v1/config/query端点上传):

<search:options xmlns:search="http://marklogic.com/appservices/search">
  <search:constraint name="size">
    <search:range type="xs:unsignedLong" expression="xdmp:document-size()">
      <search:facet-option>limit=10</search:facet-option>
    </search:range>
  </search:constraint>
</search:options>

之后就可以用更简洁的查询语法:

{
  "query": {
    "and-query": [
      {
        "word-query": {
          "text": ["你的搜索关键词"]
        }
      },
      {
        "value-query": {
          "constraint-name": "size",
          "range-operator": "GT",
          "text": ["1048576"]
        }
      }
    ]
  }
}

方式三:GET请求参数直接传递

如果偏好GET请求,可通过URL参数组合查询:

GET /v1/search?q=你的搜索关键词&constraint=size&size:gt=1048576

内容的提问来源于stack exchange,提问作者afar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 11:03:15