2016-10-19 14 views
0

環境:NodeJSクライアント、Marklogic 8サーバー。Marklogic:データがクエリに準拠していません

NodeJSからのクエリは次のとおりです。

var query = qb.where(
    qb.directory('/root/dir/'), 
    qb.scope(
     qb.property('sources'), 
     qb.value('brand','MyBrand') 
    ) 
); 

翻訳されたクエリは次のとおりです。

{ 
    "whereClause": { 
     "query": { 
      "queries": [ 
       { 
        "directory-query": { 
         "uri": [ 
          "/root/dir/" 
         ] 
        } 
       }, 
       { 
        "container-query": { 
         "json-property": "sources", 
         "value-query": { 
          "json-property": "brand", 
          "text": [ 
           "MyBrand" 
          ] 
         } 
        } 
       } 
      ] 
     } 
    }, 
    "queryType": "structured", 
    "queryFormat": "json" 
} 

クエリが10501のドキュメントを返します。

しかし20の文書が返された間違った文書 "/root/dir/0029aaa0-53dc-11e6-8f88-311cf9885168.json" のクエリ条件(sources.brand =マイブランド)

サンプル抽出と一致しません:

{ 
    sources: 
     [ 
      { 
       "somefield1": { 
        "somesubfield": "0D793B77-826A-4E19-BCEF-5F1E5C07271A" 
       }, 
       "somefield2": "6408467", 
       "brand": "NA", 
       "somefield3": "TEST" 
      }, 
      { 
       "somefield": { 
        "somesubfield": "832B4AE2-C817-4960-BF8C-63374E7D1B66" 
       }, 
       "somefield2": "6408467", 
       "brand": "NA", 
       "somefield3": "TEST" 
      } 
     ], 
    otherFieldsSkipped: true, 
    badScope: 
     [ 
      { 
       "brand": "MyBrand", 
      }, 
     ], 
} 

問題は2つの異なるプラットフォームで発生します。

badScope [0] .brandが値(MyBrand)と一致しない場合は、ごく一部のドキュメントのみが間違っています。

ありがとうございました

+0

正確なバージョンをMarklogic 8.0.5 – JPA

+0

調査の結果、間違った返信文書では、他のスコープの値(MyBrand)と一致するプロパティ(ブランド)が見つかりました。 したがって、クエリはスコープ(ソース)を尊重しません。 – JPA

答えて

0

この現象はバグかもしれません。より深く掘り下げるためにサポートリクエストを提出するとよいでしょう。

フィルタリングされていないクエリをサブミットし、正しい名前の親プロパティに正しい名前を持つ不適切な値を持つ子プロパティが含まれていて、ドキュメント内の別のプロパティが子プロパティと指定された値。

フィルタリングされたクエリを送信する(遅くなります)か、要素値の位置インデックスをオンにすることによって、これらの偽陽性を排除できます。

デフォルトでは、Node.js APIはフィルタリングされていないクエリを実行します。

あなたは、フィルタリングをオンにすることができ、それはあなたが見ている偽陽性を説明するかどうかを確認するには:このクエリビルダ方法の詳細については

... the query ... 
.withOptions({search:'filtered'}) 

、以下を参照してください

http://docs.marklogic.com/jsdoc/queryBuilder.html#withOptions

+0

フィルタリングは問題を解決します。ありがとう。 – JPA

関連する問題