【问题标题】:MarkLogic cts.jsonPropertyRangeQuery dates and $property-nameMarkLogic cts.jsonPropertyRangeQuery 日期和 $property-name
【发布时间】:2019-11-26 04:06:20
【问题描述】:
let uris=cts.uris( null,null,cts.jsonPropertyRangeQuery(               
              "dateStart"
            ,
            '>=',
            xs.date('2000-01-01'),[],0.5
          )).toArray()

以上结果

[javascript] XDMP-ELEMRIDXNOTFOUND: cts.uris(null, null, cts.jsonPropertyRangeQuery("dateStart", ">=", xs.date("2000-01-01"), [], 0.5))
-- dateStart 没有日期元素范围索引

数据确实存在于某些文档中,如下所示

"times": [
   {
      "type": "openingHours", 
      "value": []
    }, 
    {
   "type": "eventTimes", 
   "value": {
       "dateStart": "2020-02-01", 
       "dateEnd": "2020-02-01", 
        "timeStart": "07:00", 
        "timeEnd": "20:00"
    }
}
], 

我已经尝试了一个完全合格的路径

/instance/times[contains(type,'eventTimes')]/value/dateStart

【问题讨论】:

  • 它告诉你它没有找到合适的索引用于范围查询。你创造了一个吗?
  • 请您解释一下在这种情况下与索引相关的含义?我要做的就是选择开始日期大于此日期的文档,并且所有搜索都指向此功能。所有示例都显示了这种工作(给定简单的示例)
  • 所以对于每个字段我想做一个简单的大于查询我需要在控制台中设置一个范围索引。这似乎是过度的,是管理的噩梦。一定有更简单的方法吗?

标签: json path marklogic


【解决方案1】:

在函数jsonPropertyRangeQuery in the MarkLogic documentation 的文档中并不明显,但要使其工作,需要在此工作之前构建元素范围索引,

但是设置起来比较简单。只需按照Defining Element Range Index documentation 中的步骤操作即可。

有一个问题。由于我们使用的是 Data-Hub,因此每次重新部署都会覆盖索引设置并丢失。

发现在Data-hub/src/main/mlconfg/databases/final-database.json JSON 中有一个 json 文件 range-element-index:我刚刚添加了我想要设置的每个索引的详细信息,这意味着它们是自动构建的执行:./gradlew mlredeploy

{
  "database-name": "%%mlFinalDbName%%",
  "range-element-index": [
    {
      "scalar-type": "date",
      "namespace-uri": "",
      "localname": "dateStart",
      "collation": "",
      "range-value-positions": true,
      "invalid-values": "reject"
    },
    {
      "scalar-type": "date",
      "namespace-uri": "",
      "localname": "dateEnd",
      "collation": "",
      "range-value-positions": true,
      "invalid-values": "reject"
    }
  ],
  "schema-database": "%%mlFinalSchemasDbName%%",
  "triggers-database": "%%mlFinalTriggersDbName%%",
  "triple-index": true,
  "collection-lexicon": true,
  "uri-lexicon": true
}

【讨论】:

    猜你喜欢
    • 2016-03-17
    • 2017-02-03
    • 2012-01-31
    • 2022-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多