如何在文档中搜索可以在我的规则中用作cts:word
查询的时间间隔?我的文件包含start-date
和end-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)
您可以在搜索时构建与所需文档匹配的任何查询,并将其嵌入到规则中。在文档插入时使用反向查询,以确定哪些规则与新文档匹配。
在你的情况下,听起来你正在寻找(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!