如何通过XCC在MarkLogic中搜索与一系列条件匹配的节点(文档)

如何通过XCC在MarkLogic中搜索与一系列条件匹配的节点(文档),marklogic,Marklogic,我是MarkLogic的新手,请帮我找到解决方案 我的XML数据被导入到MarkLogic中,我希望使用XCC查找具有特定范围条件的文档(节点)。 我在下面运行搜索命令,但得到一个错误。 请告诉我我做错了什么,并告诉我解决方法。 多谢各位 cts:search(fn:doc(), cts:and-query(cts:element-range-query(xs:QName("RequestDatetime"), ">=", "20141102170000"), cts:eleme

我是MarkLogic的新手,请帮我找到解决方案

我的XML数据被导入到MarkLogic中,我希望使用XCC查找具有特定范围条件的文档(节点)。 我在下面运行搜索命令,但得到一个错误。 请告诉我我做错了什么,并告诉我解决方法。 多谢各位

cts:search(fn:doc(),
  cts:and-query(cts:element-range-query(xs:QName("RequestDatetime"), ">=", "20141102170000"), 
  cts:element-range-query(xs:QName("RequestDatetime"), "<=", "20141103170000"))
你好,wst和其他

我试图创建元素范围索引,但它似乎不起作用。 我的数据包含许多XML文件,格式如下。 现在,如果我想搜索RequestDatetime元素的范围,我必须做什么

多谢各位

<?xml version="1.0" encoding="UTF-8"?>
<Request>
    <RequestDatetime>
        20141102174108
    </RequestDatetime>
    <RemoteHostName>
        xxxx.xxxx.xxxx.xxxx
    </RemoteHostName>
    <OrgRequest>
       GET http://xxxx/ HTTP/1.1
    </OrgRequest>
    <Protocol>
        xxxx
    </Protocol>
    <WebServer>
        xxxxxxxxx
    </WebServer>
    <Request>
        xxxxxxxxxxx
    </Request>
    <StatusCode>
    xxxxxxx
    </StatusCode>
    <BytesSent>
        Xxxxxxxxxx
    </BytesSent>
    <UserAgent>
    </UserAgent>
    <RemoteLogName>
    </RemoteLogName>
    <Cookie>
    </Cookie>
    <Referer>
    </Referer>
    <UserName>
    </UserName>
</Request>

20141102174108
xxxx.xxxx.xxxx.xxxx
得到http://xxxx/ HTTP/1.1
xxxx
xxxxxxxxx
XXXXXXXXXX
xxxxxxx
XXXXXXXXX

传递给
cts:和query
cts:querys
是一个序列,因此它们需要包含在paren中(与
fn:concat()
不同):

cts:search(fn:doc(),
cts:和查询((
cts:元素范围查询(xs:QName(“RequestDatetime”),“>=”,“20141102170000”),

cts:element range query(xs:QName(“RequestDatetime”),“谢谢wst。我跟随您的答案,但得到另一个错误。[1.0-ml]XDMP-ELEMRIDXNOTFOUND:cts:search(fn:doc(),cts:and query(cts:element range query(fn:QName(“,“RequestDatetime”),“>=”,“20141102170000”(“排序规则=),1),cts:element range query(fn:QName(“,“RequestDatetime”),”,“@manhtc要使用
cts:element range query
您需要在数据库设置中配置范围索引(请参阅).FYI,
xs:unsignedLong
对于您的范围索引可能是一种很好的类型。我知道了。我将再次尝试检查结果。非常感谢。我已经更新了问题内容,请查看您是否有时间。谢谢。@manhtc这不会影响答案。如果您仍然有问题,请接受此答案并发布新的问题跟踪新问题,包括您收到的任何错误。
<?xml version="1.0" encoding="UTF-8"?>
<Request>
    <RequestDatetime>
        20141102174108
    </RequestDatetime>
    <RemoteHostName>
        xxxx.xxxx.xxxx.xxxx
    </RemoteHostName>
    <OrgRequest>
       GET http://xxxx/ HTTP/1.1
    </OrgRequest>
    <Protocol>
        xxxx
    </Protocol>
    <WebServer>
        xxxxxxxxx
    </WebServer>
    <Request>
        xxxxxxxxxxx
    </Request>
    <StatusCode>
    xxxxxxx
    </StatusCode>
    <BytesSent>
        Xxxxxxxxxx
    </BytesSent>
    <UserAgent>
    </UserAgent>
    <RemoteLogName>
    </RemoteLogName>
    <Cookie>
    </Cookie>
    <Referer>
    </Referer>
    <UserName>
    </UserName>
</Request>
cts:search(fn:doc(),
  cts:and-query((
    cts:element-range-query(xs:QName("RequestDatetime"), ">=", "20141102170000"), 
    cts:element-range-query(xs:QName("RequestDatetime"), "<=", "20141103170000")
  ))
)