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

时间:2018-02-28 17:56:11

标签: marklogic

如何在文档中搜索可用作规则中cts:word查询的时间间隔?我的文档包含start-dateend-date。我的搜索条件是' 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)

1 个答案:

答案 0 :(得分:3)

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

在您的情况下,听起来您正在寻找text。这归结为某种cts:这样的查询:

(Dog OR Cat OR timestamp) AND (start-date LE '2018-02-28') AND (end-date GE '2018-02-28')

您可以将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')) )) 替换为所需的值,但请记住它不是动态的。对于您要提醒的每个不同日期,您需要一个新规则。

HTH!