2

我想为cts:and-query同一个节点中的两个属性做。 cts:and-query正在单独搜索文档中的测试条件,而不是在同一个节点中。

有没有办法限制搜索在同一个节点上应用?

4

2 回答 2

0

根据您的 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\]' 属性之间不会有距离。

于 2012-10-17T20:54:48.533 回答
0

将 and-query 包装在 element-query 中,如此处第二个示例中所述:

http://docs.marklogic.com/cts:element-query?q=cts:element-query

它不必限制直接元素本身,后代也包含在匹配中,但根据您的内容结构,这可能就足够了。

如果不是,请使用 XPath 谓词从搜索结果中过滤掉误报。使计算搜索总数等变得更加困难,但至少给出了正确的结果。

于 2012-10-17T20:48:47.110 回答