2

cts:and-query同じノード内の 2 つの属性 に対して実行したい。cts:and-query同じノードではなく、ドキュメント内のテスト条件を個別に検索しています。

検索を制限して同じノードに適用する方法はありますか?

4

2 に答える 2

0

cts:near-query()XML構造によっては、を使用する代わりに、距離がゼロのを使用してこれを実行できる場合があります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

次の 2 番目の例で説明されているように、and-query を element-query 内にラップします。

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

直接要素自体に限定する必要はありません。子孫も一致に含まれますが、コンテンツ構造によってはこれで十分な場合があります。

そうでない場合は、XPath 述語を使用して、検索結果から誤検出を除外します。検索の合計などを数えるのは難しくなりますが、少なくとも正しい結果が得られます。

チッ!

于 2012-10-17T20:48:47.110 に答える