1

假设我有 2 个文件:

<doc1>
  <a>the dog</a>
  <a>the cat</a>
  <a>the human</a>
</doc1>

<doc2>
  <a>the dog</a>
  <a>foo</a>
  <a>bar</a>
</doc2>

现在对于 Marklogic,我想在它们中搜索“the”,这样我就可以运行:

search:search(
  'a:the',
  <options xmlns="http://marklogic.com/appservices/search">
    <constraint name="a">
        <value>
            <term-option>case-insensitive</term-option>
            <element ns="" name="a"/>
        </value>
    </constraint>
  </options>
)

这可行,但返回两个文档(这是我要求的)但是如果我只想要在约束上有超过 1 个匹配的结果...即。'给我有 2+ 个节点的文档,带有“the”'

我不知道从哪里开始。谢谢!

4

1 回答 1

4

您在http://markmail.org/message/gaehhxnr7qb2un5p#query:+page:1+mid:vxjmjuh2wflofa67+state:results上的问题的答案似乎不错。总结线程,Rob 和 John 都指出了min-occurs选项cts:search,Colleen 补充说:

要在 Search API 中启用它,您需要在该元素上配置一个单词约束,添加<term-option>min-occurs=2</term-option>

Mary 指出,索引查找将是

...只要您启用了正确的位置,就可以准确地处理像这样的简单情况。

如果您在其上运行 xdmp:plan 并在最终计划中看到 min-occurs,则您启用了正确的位置。

澄清一下:虽然 Colleen 提到了一个词约束,但http://docs.marklogic.com/cts:element-value-query显示了相同的选项可用于cts:element-value-query. 因此,您也应该能够将其与值约束一起使用。

于 2012-10-13T17:47:15.593 回答