我想为同一节点中的两个属性执行cts:and-query
。 cts:and-query
单独在文档中而不是在同一节点中搜索测试条件。
有没有办法限制搜索在同一节点上应用?
答案 0 :(得分:0)
将and-query包含在元素查询中,如第二个示例所述:
http://docs.marklogic.com/cts:element-query?q=cts:element-query
没有必要限制直接元素本身,匹配中也包含后代,但根据您的内容结构,这可能就足够了。
如果没有,请使用XPath谓词过滤掉搜索结果中的误报。使计数搜索总数等更难,但至少给出正确的结果。
HTH!
答案 1 :(得分:0)
根据您的XML结构,您可以使用距离为零的cts:near-query()
而不是使用cts:and-query()
来执行此操作。我刚写了一篇文章,谈到near-query distance。简而言之,距离取决于元素内部的单词,但不受属性中单词的影响。这应该可以解决问题:
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>
stuff元素内的文本在/doc/stuff\[1\]
的属性和/doc/stuff\[2\]
的属性之间提供了一些距离。 a和b属性之间没有距离。如果stuff元素没有文本,那么/doc/stuff\[1\]
的属性和/doc/stuff\[2\]
的属性之间就不会有距离。