元素范围索引中的整数范围是多少

What is the integer range in element range index

我在 property_x 上创建了 range-element-index,我将 scalar-type 设置为 int,我想对其执行 jsonPropertyRangeQuery。但是对于技术上有效的值,它会抛出错误:No decimal element range index for property_x.

在我执行 jsonPropertyRangeQuery 之前,我检查数字类型是否在整数范围内,就像这样:xdmp.type(100000025131) 和它 return 'integer' 所以我认为它是正确的值,因为 xdmp.type(10000002513100000)) 将 return 'double'.

如何检查该值是否可以在 jsonPropertyRangeQuery 中使用?

将值索引为xs:long然后就可以无误搜索了:

cts.search(cts.jsonPropertyRangeQuery("property_x", "=", 2147483647))

我认为 JavaScript Number(以及 MarkLogic 尚未使用的较新版本的 V8,BigInt)和 [=71] 之间可能存在一些混淆和问题=] xs:intxs:integerxs:longxs:unsignedLong 等的架构数值类型和范围

不过,xdmp.type(100000025131) returns integerparseInt('100000025131') === 100000025131 returns true.

  • xs.int('100000025131')(最大值为 2147483647)抛出:

    [javascript] XDMP-CAST: function bound ()() -- Invalid cast: "100000025131" cast as xs.int

  • xs.unsignedInt('100000025131')(最大值为 4294967295)抛出:

    [javascript] XDMP-CAST: function bound ()() -- Invalid cast: "100000025131" cast as xs.unsignedInt

  • xs.integer('100000025131') returns xs.integer 值为 100000025131
  • xs.long('100000025131') returns xs.long 值为 100000025131

有一个索引选项为 xs:intxs:unsignedIntxs:longxs:unsignedLong,但没有 xs:integer

如果你能打开一个 MarkLogic Support ticket 并要求澄清 xdmp.type(100000025131) 报告 integer 的原因,或者可能有(或需要)哪些文件来说明,那就太好了描述简单类型 integer 如何映射到模式类型 xs.integerxs.intxs.long 等?