Marklogic中JSON文档的日期格式

时间:2016-02-10 13:45:49

标签: json timezone marklogic marklogic-8


  我正在使用带有日期的JSON文档,我正在尝试创建范围索引。当我这样做ISO8601格式时

2015-11-02T00:00:00-0600

我收到以下错误

IndexerEnv::putRangeIndex: XDMP-RANGEINDEX: Range index error: date "2015-11-02T00:00:00-0600": XDMP-LEXVAL: Invalid lexical value "2015-11-02T00:00:00-0600"

我认为它需要在UTC时间,并且还需要一个' Z'最后表明祖鲁时区,所以我强迫测试时间如下

2015-11-02T00:00:00Z

我仍然得到同样的错误..

IndexerEnv::putRangeIndex: XDMP-RANGEINDEX: Range index error: date "2015-11-02T00:00:00Z": XDMP-LEXVAL: Invalid lexical value "2015-11-02T00:00:00Z"

这里有什么问题?还有另外一个问题,Marklogic是否只在我们添加' Z' (祖鲁时区)在约会?

由于

3 个答案:

答案 0 :(得分:5)

您的范围索引是否使用正确的数据类型创建?

错误告诉我您已创建数据类型日期的范围索引,并尝试将dateTime推入日期范围。 尝试将范围索引的定义从类型日期更改为类型dateTime。

HTH,

彼得

答案 1 :(得分:2)

谢谢大家,发现我的错误..

对于xs:string以外的类型,我不应该将排序规则参数添加到排序顺序中。将其更改为

<sort-order type="xs:dateTime" collation="http://marklogic.com/collation/" direction="ascending">
    <field name="concept_createdDate"/>
</sort-order>

<sort-order type="xs:dateTime" direction="ascending">
    <field name="concept_createdDate"/>
</sort-order>

并且全部工作

答案 2 :(得分:0)

感谢您的建议,我将日期索引更改为dateTime索引,我使用该索引进行排序,并得到以下异常

[1.0-ml] SEARCH-BADORDERBY: (err:FOER0000) Indexes are required to support element, element-attribute, json-property, or field sort specifications.
Stack Trace

In /MarkLogic/appservices/search/search-impl.xqy on line 2401
In impl:build-order-by(<options xmlns="http://marklogic.com/appservices/search"><constraint name="concept"><custom facet="false"><parse apply="p...</options>)
$options := <options xmlns="http://marklogic.com/appservices/search"><constraint name="concept"><custom facet="false"><parse apply="p...</options>
$term := <sort-order type="xs:dateTime" collation="http://marklogic.com/collation/" direction="ascending" xmlns="http://marklogic.com/appservices/search"><field name="concept_createdDate"/></sort-order>
$direction := xs:token("ascending")
$ref := ()

以下是我正在运行的

let $search := "mamidrx"
let $options := 
  <options xmlns="http://marklogic.com/appservices/search">
    <sort-order type="xs:dateTime" collation="http://marklogic.com/collation/" direction="ascending">
      <field name="concept_createdDate"/>
    </sort-order>
    <term>
      <term-option>case-insensitive</term-option>
      <term-option>punctuation-insensitive</term-option>
      <term-option>whitespace-insensitive</term-option>
      <term-option>wildcarded</term-option>
    </term>
    <return-facets>false</return-facets>
    <return-values>false</return-values>
    <return-constraints>false</return-constraints>
    <return-frequencies>false</return-frequencies>
    <return-qtext>false</return-qtext>
    <search-option>unfiltered</search-option>
    <search-option>unfaceted</search-option>
    <search-option>format-json</search-option>
    <search-option>score-simple</search-option>
  </options>

let $start := 1
let $page-length :=10000

let $result := search:search($search, $options, $start, $page-length) 
return $result 

我确实为concept_createdDate创建了字段和字段范围索引 enter image description here