【问题标题】:MarkLogic - Search based on the path of JSON object (without using path range index)MarkLogic - 基于 JSON 对象的路径搜索(不使用路径范围索引)
【发布时间】:2019-04-12 16:37:48
【问题描述】:

MarkLogic:9.0-6.2

我们在客户实体中有如下 JSON 文档。

"CustomerInfo": {
  "IdInfo": {
     "CustomerId":"12345"
  }, 
  "PartyRltp": {
      "CustomerId":"45678"
  }
}

我的需要是根据CustomerId在特定路径CustomerInfo.IdInfo.CustomerId上搜索文档

所以如果我搜索“12345”,应该会返回上面的文档。但是如果我用“45678”搜索,上面的文档应该不会返回。

我创建了路径范围索引并使用了 cts.pathRangeQuery('/CustomerInfo/IdInfo/CustomerId','=', '12345')。但是,意识到路径范围索引非常昂贵,所以寻找一种方法来实现没有路径范围索引。

提前致谢!

【问题讨论】:

    标签: marklogic marklogic-9 marklogic-dhf


    【解决方案1】:

    我想你在找cts.jsonPropertyScopeQuery:

    cts.jsonPropertyScopeQuery(
      'IdInfo',
      cts.jsonPropertyValueQuery(
        'CustomerId',
        '12345'
      )
    )
    

    HTH!

    【讨论】:

    • 请注意,此查询未经过滤将无法工作:)
    • 好点,但您可能不需要过滤。同时启用词位和元素词位,使范围查询准确无过滤。如果 CustomerId 从不包含空格,也不包含标点符号等,您可能根本不需要过滤搜索。
    • 是的,你是对的。我没有进一步测试它,但我认为您需要启用元素值位置而不是元素词位置。
    • 单词位置用于范围查询(在该文档页面上提到),但您可能是对的,因为上面在范围上下文中使用值查询,您还需要元素启用值位置。 docs.marklogic.com/cts.plan 是你的朋友..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-15
    • 1970-01-01
    • 1970-01-01
    • 2020-01-27
    • 1970-01-01
    相关资源
    最近更新 更多