@chris put another way - how would I test your example using a cts:search rather than displaying in the return option?
On Mon, Sep 25, 2017 at 8:45 AM, Kari Cowan <[email protected]> wrote: > Chris, Gert - Thanks - I tried your test and I see that it does return > uri's from the last 10 days, so that works - but now I am having difficulty > incorporating that to a more complex query. > > When I tried dropping that into my cts:search query, it didn't return > anything. Anything you can suggest to make this work, or do you see > anything glaringly wrong? > > let $element-name := fn:QName ('http://www.incisivemedia.com/summary', > 'PUBLICATION-DATE') > let $attribute-name := fn:QName ('', 'datetime') > > > let $search:=( > cts:search(fn:collection(), > cts:and-query(( > cts:directory-query("/data-sources/sbm/","infinity"), > cts:element-attribute-range-query($element-name, $attribute-name, > '>', fn:current-dateTime () - xs:dayTimeDuration('P10D')) > )) > ) > ) > > for $docs in $search/ir:ARTICLE > order by xs:dateTime($docs//sum:PUBLICATION-DATE/@datetime) descending > return $docs > > > > On Sat, Sep 23, 2017 at 12:32 PM, Geert Josten <[email protected] > > wrote: > >> I think the issue is in how you write the reference to the element you >> want to query. You write cts:element-attribute-range-qu >> ery(xs:QName("PUBLICATION-DATE”), but like Chris is suggesting, you >> better write xs:QName("PUBLICATION-DATE”) as fn:QName(“ >> http://www.incisivemedia.com/summary”, “PUBLICATION-DATE”), or you >> should declare a namespace prefix in your code, and use that in xs:QName: >> >> declare namespace sum = “http://www.incisivemedia.com/summary”; >> >> xs:QName(“sum:PUBLICATION-DATE") >> >> Cheers >> >> From: <[email protected]> on behalf of Kari Cowan < >> [email protected]> >> Reply-To: MarkLogic Developer Discussion <[email protected] >> > >> Date: Friday, September 22, 2017 at 11:02 PM >> To: MarkLogic Developer Discussion <[email protected]> >> Subject: Re: [MarkLogic Dev General] Querying DateTime values >> >> Let me get your opinion on this. I confirmed that there IS a dateTime >> element-attribute range index. >> >> Where the query works correctly, the data is written like this >> representation: >> >> <DOC-SUMMARY xmlns="http://www.incisivemedia.com/summary"> >> <PUBLICATION-DATE date="2017-08-09" >> datetime="2017-08-09T15:14:00-04:00">2017-08-09 >> 15:14:00:000</PUBLICATION-DATE> >> </DOC-SUMMARY> >> >> Where it fails, the data is written this way - note the namespace >> precedes the declaration - which seems wrong to me. >> >> If it's right or wrong, can you advise if that needs to be updated or if >> there's a way to run the query to check a date range, returning docs within >> say the last 10 days only? >> >> <summary:DOC-SUMMARY xmlns:summary="http://www.incisivemedia.com/summary >> "> >> <summary:PUBLICATION-DATE date="2017-09-21" datetime="2017-09-21T17:47:00Z >> ">2017-09-21T17:47:00Z</summary:PUBLICATION-DATE> >> </summary:DOC-SUMMARY> >> >> On Fri, Sep 22, 2017 at 1:05 PM, Kari Cowan <[email protected]> wrote: >> >>> Ahh, once i fixed the misplaced paren, I can get back a proper error >>> that tells me something more useful -- No dateTime element-attribute range >>> index for fn:QName("", "PUBLICATION-DATE") fn:QName("", "datetime") >>> >>> Thanks! - I think I know where to go from here :) >>> >>> XDMP-ELEMATTRRIDXNOTFOUND: cts:search(fn:collection(), >>> cts:and-query((cts:directory-query("/data-sources/sbm/", "infinity"), >>> cts:or-query((cts:element-query(xs:QName("sum:PUBLICATION-NAME"), >>> cts:word-query("BenefitsPro.com", ("lang=en"), 1), ()), >>> cts:element-query(xs:QName("sum:PUBLICATION-NAME"), >>> cts:word-query("CUTimes", ("lang=en"), 1), ()), >>> cts:element-query(xs:QName("sum:PUBLICATION-NAME"), >>> cts:word-query("Treasury & Risk", ("lang=en"), 1), ()), ...)), >>> cts:element-attribute-range-query(fn:QName("", "PUBLICATION-DATE"), >>> fn:QName("", "datetime"), ">=", xs:dateTime("2017-08-23T23:59:00Z"), >>> (), 1)), ())) -- No dateTime element-attribute range index for fn:QName("", >>> "PUBLICATION-DATE") fn:QName("", "datetime") >>> >>> On Fri, Sep 22, 2017 at 8:15 AM, Christopher Hamlin <[email protected]> >>> wrote: >>> >>>> I'm not sure what is the real problem. >>>> >>>> xs:dateTime ('2003-08-01T08:00:00Z') > xs:dateTime (fn:current-date() >>>> - xs:dayTimeDuration("P30D")) >>>> , >>>> xs:dateTime ('2017-09-28T00:00:00-04:00') > xs:dateTime >>>> (fn:current-date() - xs:dayTimeDuration("P30D")) >>>> >>>> return false and true, no failure. What type is the index, and what >>>> is the failure? >>>> >>>> On Fri, Sep 22, 2017 at 11:10 AM, Geert Josten >>>> <[email protected]> wrote: >>>> > Hi Kari, >>>> > >>>> > Looks like you misplaced one of the parentheses. Make sure to wrap the >>>> > string "2017-09-22T08:00:00Z” in xs:dateTime(..) before you try to >>>> substract >>>> > the duration. In provided query you have the xs dateTime cast >>>> wrapping both >>>> > current-date and the duration. >>>> > >>>> > Cheers, >>>> > Geert >>>> > >>>> > From: <[email protected]> on behalf of Kari >>>> Cowan >>>> > <[email protected]> >>>> > Reply-To: MarkLogic Developer Discussion < >>>> [email protected]> >>>> > Date: Friday, September 22, 2017 at 4:51 PM >>>> > To: MarkLogic Developer Discussion <[email protected]> >>>> > Subject: [MarkLogic Dev General] Querying DateTime values >>>> > >>>> > I need some expert tips on this bug. >>>> > >>>> > cts:element-attribute-range-query(xs:QName("PUBLICATION-DATE >>>> "),xs:QName("datetime"), >>>> > ">=", xs:dateTime(fn:current-date() - xs:dayTimeDuration("P30D"))) >>>> > >>>> > The above query works fine when the publication-date is in this >>>> format: >>>> > <PUBLICATION-DATE date="2017-09-28" >>>> > datetime="2017-09-28T00:00:00-04:00">2017-09-28 >>>> > 00:00:00:000</PUBLICATION-DATE> >>>> > >>>> > But it fails when >>>> > <PUBLICATION-DATE date="2003-08-01" >>>> > datetime="2003-08-01T08:00:00Z">2003-08-01T08:00:00Z</summar >>>> y:PUBLICATION-DATE> >>>> > >>>> > The datetime format is different, but if I manipulate the >>>> current-date to >>>> > match that format, the query will fail with this message: >>>> > >>>> > [1.0-ml] XDMP-EXPR: (err:XPTY0004) "2017-09-22T08:00:00Z" - >>>> > xs:dayTimeDuration("P30D") -- Invalid expression >>>> > >>>> > How would I write the query to properly compare the dates? >>>> > >>>> > The goal above was to return content from the last 30 days. >>>> > >>>> > >>>> > >>>> > >>>> > >>>> > _______________________________________________ >>>> > General mailing list >>>> > [email protected] >>>> > Manage your subscription at: >>>> > http://developer.marklogic.com/mailman/listinfo/general >>>> > >>>> _______________________________________________ >>>> General mailing list >>>> [email protected] >>>> Manage your subscription at: >>>> http://developer.marklogic.com/mailman/listinfo/general >>>> >>> >>> >>> >>> -- >>> >>> Kari Cowan :: Web Developer :: ALM Media >>> >>> 1035 Market St. Suite 550, San Francisco, CA 94103 >>> >>> iPhone/Text/FaceTime: +1 4157 444 762 >>> >> >> >> >> -- >> >> Kari Cowan :: Web Developer :: ALM Media >> >> 1035 Market St. Suite 550, San Francisco, CA 94103 >> >> iPhone/Text/FaceTime: +1 4157 444 762 >> >> _______________________________________________ >> General mailing list >> [email protected] >> Manage your subscription at: >> http://developer.marklogic.com/mailman/listinfo/general >> >> > > > -- > > Kari Cowan :: Web Developer :: ALM Media > > 1035 Market St. Suite 550, San Francisco, CA 94103 > > iPhone/Text/FaceTime: +1 4157 444 762 > -- Kari Cowan :: Web Developer :: ALM Media 1035 Market St. Suite 550, San Francisco, CA 94103 iPhone/Text/FaceTime: +1 4157 444 762
_______________________________________________ General mailing list [email protected] Manage your subscription at: http://developer.marklogic.com/mailman/listinfo/general
