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>
)

これは機能しますが、両方のドキュメントを返します(これは私が求めたものです)しかし、制約に複数の一致がある結果のみが必要な場合はどうなりますか...つまり。'"the"が付いた2つ以上のノードを持つドキュメントをください'

どこから始めたらいいのかわからない。ありがとう!

4

1 に答える 1

4

http://markmail.org/message/gaehhxnr7qb2un5p#query:+page:1+mid:vxjmjuh2wflofa67+state:resultsでの質問への回答は良さそうです。min-occursスレッドを要約すると、ロブとジョンは両方とものオプションを指摘し、cts:searchコリーンは次のように付け加えました。

Search APIでこれを有効にするには、その要素に単語制約を設定し、次のように追加します。<term-option>min-occurs=2</term-option>

メアリーは、インデックスルックアップは

...適切な位置が有効になっている限り、このような単純なケースでは正確です。

その上でxdmp:planを実行し、最終計画でmin-occursを確認すると、適切な位置が有効になります。

明確にするために:Colleenは単語の制約について言及しましたが、http://docs.marklogic.com/cts :element-value-queryは、で使用可能な同じオプションを示していますcts:element-value-query。したがって、値制約でも使用できるはずです。

于 2012-10-13T17:47:15.593 に答える