有没有办法在文档中搜索开始日期和结束日期时间间隔,并使用Marklogic中的反向查询发送警报通知?

问题描述 投票:2回答:1

如何在文档中搜索可以在我的规则中用作cts:word查询的时间间隔?我的文件包含start-dateend-date。我的搜索条件是“日期”参数,该参数应该在此时间间隔内。如果是的话,我会发出警报。

目前这是我的'规则'(已创建配置和操作。)

xquery version "1.0-ml";  
declare namespace alert = "http://marklogic.com/xdmp/alert";  
import module "http://marklogic.com/xdmp/alert" at "/MarkLogic/alert.xqy";  

let $rule := alert:make-rule(  
     "rule-TimeInterval",  
     "Rule for alerts on time interval.",  
     0,  
     cts:word-query(("Dog","Cat", "timestamp"),("distance-weight=10")),  
     "action-TimeInterval",  
     <alert:options/> )  
return alert:rule-insert("config-TimeInterval", $rule)
marklogic
1个回答
3
投票

您可以在搜索时构建与所需文档匹配的任何查询,并将其嵌入到规则中。在文档插入时使用反向查询,以确定哪些规则与新文档匹配。

在你的情况下,听起来你正在寻找(Dog OR Cat OR timestamp) AND (start-date LE '2018-02-28') AND (end-date GE '2018-02-28')。这归结为某种cts:这样的查询:

cts:and-query((
  cts:word-query(("Dog","Cat", "timestamp"),("distance-weight=10")),
  cts:element-range-query(xs:QName("start-date"), "<=", xs:date('2018-02-28')),
  cts:element-range-query(xs:QName("end-date"), ">=", xs:date('2018-02-28'))
))

您可以将'2018-02-28'替换为您想要的值,但请记住它不是动态的。您需要为要提醒的每个不同日期制定新规则。

HTH!

© www.soinside.com 2019 - 2024. All rights reserved.