如何在文档中搜索可用作规则中cts:word
查询的时间间隔?我的文档包含start-date
和end-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)
答案 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!