2017-01-27 11 views
0

cts.Queryを満たす文書からいくつかの要素を選択したいと考えています。私はMarkLogicドキュメントではJavaScriptを使用して、このようにしているのです -単一クエリで文書の要素を選択しないでください

<a:root xmlns:a = 'some-ns'> 
    <a:id>some-id</a:id> 
    <a:some-element1/> 
    <a:some-element2/> 
    <a:some-element3/> 
    . 
    . 
    <a:number field='field1'>3</a:number> 
    <a:number field='field2'>4</a:number> 
    . 
    . 
</a:root> 

私はa:ida:number要素および単一のクエリでa:numberfield属性を取得したいです。

私が使用してみました -

cts.valueTuples(
    [ 
     cts.elementReference(fn.QName(a, 'id')), 
     cts.elementAttributeReference(fn.QName(a, 'number'), xs.QName('field')), 
     cts.elementReference(fn.QName(a, 'number'))  
    ], 
    [], 
    cts.andQuery(
     [ 
     <query1>, 
     <query2> 
     ] 
    ) 
) 

しかし、これは私に(直積のようなものを)値のタプルで3つのクエリの結果のすべての組み合わせを与えています。

希望の結果を得るにはどうすればよいですか?

答えて

1

あなたが適切なワード位置のインデックスを有効にする場合は、orderedオプションを試すことができます:最初の辞書 からの値が第2の辞書からの値の前に表示されたときにのみ

は共起を含めます。両方のレキシコンに対して単語 の位置を有効にする必要があります。

私はそれがクロス積を防止するとは思わないが、少なくともそれらは少なくなるはずである。

cts.valuescts.valueTuplesを複数回呼び出しても問題ありません。あなたは3つの呼び出しを行い、(cts.uriReference()を使用して)uri-valueの組み合わせを要求し、結果を相互に関連付けるためにuriを使用します。

HTH!

関連する問題