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

基于MarkLogic REST API实现指定属性关联的去重值查询

解决方案

方法1:利用现有Lexicon和REST API约束查询

你已经为META/@name和META/@value创建了Lexicon,直接通过/v1/values端点结合过滤条件即可实现需求:

  • 获取去重的name属性值列表
    直接发起请求:

    GET /v1/values/META/@name?format=json
    

    会返回所有去重的name值(如["fruit", "vegetable"]),用于填充第一个选择列表。

  • 根据指定name获取对应去重value列表
    当选中某一name(比如fruit)时,添加过滤条件查询META/@value:

    GET /v1/values/META/@value?q=META/@name:fruit&format=json
    

    这里的q参数会过滤出所有META/@name等于fruit的元素,再返回对应的value属性去重值列表,不会产生无效组合。

方法2:自定义REST扩展(精准关联查询)

如果方法1的过滤效果达不到预期,可编写XQuery扩展实现更精准的属性关联:

  • 编写XQuery扩展代码
    创建get-meta-values.xqy文件,内容如下:

    xquery version "1.0-ml";
    declare variable $name as xs:string external;
    
    let $matching-values := cts:element-attribute-values(
      xs:QName("META"), xs:QName("value"),
      (),
      cts:element-attribute-value-query(xs:QName("META"), xs:QName("name"), $name)
    )
    return fn:distinct-values($matching-values)
    
  • 部署扩展到MarkLogic
    通过REST API完成部署:

    PUT /v1/config/resources/get-meta-values
    Content-Type: application/xquery
    -- 此处放入上述XQuery代码
    
  • 调用扩展获取结果
    请求指定name对应的value列表:

    GET /v1/resources/get-meta-values?name=fruit&format=json
    

    该接口会精准返回与name=fruit关联的所有去重value值,彻底避免无效组合问题。

UI联动逻辑

  • 初始化页面时,调用/v1/values/META/@name获取所有name值,填充第一个选择列表。
  • 监听第一个列表的选中事件,将选中的name值作为参数传入上述接口,获取对应value列表后填充第二个选择列表。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 23:05:17