在marklogic中搜索时是否可以比较文档的元素值
我想了解marklogic是否能够在执行搜索(即cts:search)时比较单个文档中的元素值 例如: 考虑下面的文档在marklogic中搜索时是否可以比较文档的元素值,marklogic,Marklogic,我想了解marklogic是否能够在执行搜索(即cts:search)时比较单个文档中的元素值 例如: 考虑下面的文档 <root> <someTags></someTags> . . . <effectivePeriod> <dateTimeBegin>2009-01-16T00:00:00-05:00 </dateTimeBegin>
<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进一步过滤它们。如果需要将查询扩展到数百万或数十亿个文档,还可以使用其他技术。