我想为cts:and-query
同一个节点中的两个属性做。 cts:and-query
正在单独搜索文档中的测试条件,而不是在同一个节点中。
有没有办法限制搜索在同一个节点上应用?
我想为cts:and-query
同一个节点中的两个属性做。 cts:and-query
正在单独搜索文档中的测试条件,而不是在同一个节点中。
有没有办法限制搜索在同一个节点上应用?
根据您的 XML 结构,您可以通过使用cts:near-query()
距离为零的 a 而不是使用cts:and-query()
. 前段时间我写了一篇关于近查询距离的帖子。简而言之,距离取决于元素内部的单词,但不受属性中单词的影响。这应该可以解决问题:
cts:near-query(
(cts:element-attribute-value-query($element-qname, $attr1-qname),
cts:element-attribute-value-query($element-qname, $attr2-qname)),
0
)
请注意,如果没有element-level
单词将一个元素的属性与另一个元素的属性分开,则此方法将不起作用。例如:
<doc>
<stuff a="1" b="2">some text</stuff>
<stuff a="3" b="4">some other text</stuff>
</doc>
/doc/stuff\[1\]
stuff 元素内的文本提供了' 属性和/doc/stuff\[2\]
' 属性之间的距离。a 和 b 属性之间没有距离。/doc/stuff\[1\]
如果 stuff 元素没有文本,那么' 属性和/doc/stuff\[2\]
' 属性之间不会有距离。
将 and-query 包装在 element-query 中,如此处第二个示例中所述:
http://docs.marklogic.com/cts:element-query?q=cts:element-query
它不必限制直接元素本身,后代也包含在匹配中,但根据您的内容结构,这可能就足够了。
如果不是,请使用 XPath 谓词从搜索结果中过滤掉误报。使计算搜索总数等变得更加困难,但至少给出了正确的结果。
!