在marklogic中搜索时是否可以比较文档的元素值

在marklogic中搜索时是否可以比较文档的元素值,marklogic,Marklogic,我想了解marklogic是否能够在执行搜索(即cts:search)时比较单个文档中的元素值 例如: 考虑下面的文档 <root> <someTags></someTags> . . . <effectivePeriod> <dateTimeBegin>2009-01-16T00:00:00-05:00 </dateTimeBegin>

我想了解marklogic是否能够在执行搜索(即cts:search)时比较单个文档中的元素值

例如:

考虑下面的文档

<root>
    <someTags></someTags>
    .
    .
    .
    <effectivePeriod>
        <dateTimeBegin>2009-01-16T00:00:00-05:00
        </dateTimeBegin>
        <dateTimeEnd>2009-01-16T00:00:00-05:00
        </dateTimeEnd>
    </effectivePeriod>
    .
    .
    .
    <otherTags></otherTags>
</root>

.
.
.
2009-01-16T00:00:00-05:00
2009-01-16T00:00:00-05:00
.
.
.

让我们想象一下,有十万个像上面这样的文档。我如何进行搜索以确保我只在effectivePeriod.dateTimeEnd>effectivePeriod.dateTimeBegin的位置提取文档?

您看过了吗?

使用尽可能具体的条件构建您的
cts:search()
,然后使用谓词过滤结果:

cts:search(collection(), 
           cts:and-query())[root/effectivePeriod[dateTimeEnd gt dateTimeBegin]]

您的文档结构似乎已被默认的HTML格式吃掉。你能修改一下以反映实际结构吗?嗨,山姆,我来看看。你有关于ML7的指针吗?十万个文档实际上并没有那么多。在ML 7中,您可以很容易地编写一些XQuery或JavaScript代码来循环遍历与cts搜索匹配的文档,并使用您的条件effectivePeriod.dateTimeEnd>effectivePeriod.dateTimeBegin进一步过滤它们。如果需要将查询扩展到数百万或数十亿个文档,还可以使用其他技术。