2012-10-12 57 views
1

比方說,我有2個文件的結果(不只是一根火柴):Marklogic - 匹配約束X倍

<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,我想搜索他們爲「的」,所以我可能會遇到:

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的結果... ie。 '給我的文件,有2+節點與'the''

我不知道從哪裏開始。謝謝!

回答

4

您的問題在http://markmail.org/message/gaehhxnr7qb2un5p#query:+page:1+mid:vxjmjuh2wflofa67+state:results的答案看起來不錯。總結線程,羅伯和約翰都指出了min-occurs選項cts:search和科琳說:

要啓用搜索API在你配置元素就一個字約束,增加<term-option>min-occurs=2</term-option>

瑪麗指出,索引查找將是

...只要您啓用了正確的位置,就可以對此類簡單情況進行準確的分析。

如果您在其上運行xdmp:plan,並在最終計劃中看到min-occurrence,則您已啓用 正確的位置。

只是爲了澄清:雖然科琳提到了一個字約束,http://docs.marklogic.com/cts:element-value-query顯示cts:element-value-query可用相同的選項。所以你應該也可以使用它的值約束。