2017-09-01 19 views
1

私はjsonファイルを持っています。これは文字列値を持つプロパティと整数値を持つプロパティを持っています。値はcts:word-queryを使用します。例えば.. FOR JSONプロパティは、文字列値を持つ場合、これは動作しますが、数が値のために、それは動作しません。cts:数値のjsonプロパティを検索するword-query

次は私のJSON文字列である

{ 
    "id": "35A7D24661CFB8A7E050480A751E4949", 
    "moniker": "CL-1460933", 
    "entityType": "Cell Line", 
    "entitySubType": "Immortalized", 
    "bioSafetyLevel": "BL2", 
    "name": "WSU-NHL", 
    "growthFS": { 
     "id": "35A7D24661D1B8A7E050480A751E4949", 
     "mediumUsed": "IMDM + 10% HS", 
     "percentCO2": 5, 
     "percentHumudity": 95, 
     "percentSerum": 10, 
     "spinnerPlateSpeed": -1, 
     "temp": -1, 
     "growthConditions": "Suspension" 
    }, 
} 

私が行うと、次の

cts:search(fn:doc(), 
cts:json-property-scope-query("growthFS", cts:json-property-scope-query("percentHumudity", 
cts:word-query("95", ("wildcarded"), 1))))[1] 

私はJSONを得ることはありませんが、私は次のよう

cts:search(fn:doc(), 
cts:json-property-scope-query("growthFS", cts:json-property-value-query("percentHumudity", 95, "wildcarded")))[1] 

を行うとき、私は書類を取得し、私はアンクルましたどのような文字列(文字列または数値)のatomictypeを考慮せずに、一般的なcts:クエリを書くことができますか?この場合、cts:word-queryがどのxs:atomicTypeでも機能するという印象を与えます。

答えて

1

XMLではすべてが文字データであり、XMLスキーマなしでは区別できない型です。そのため、MarkLogicはインデックス時にスキーマ知識がないため、すべてのXML値を文字列値として、いわゆるユニバーサルインデックスに含めます。 JSONブール値では、数値は明示的な型を持ちます。たとえスキーマがなくても、そのように索引付けすることができます。それに応じてMarkLogicが行います。

結果として、値照会を使用してJSON番号を一致させる必要があります。同じ値の単語と値のクエリでORクエリを実行できるはずです:

cts:search(
    fn:collection(), 
    cts:json-property-scope-query("growthFS", 
    cts:or-query((
     cts:json-property-word-query("percentHumudity", "95", "wildcarded"), 
     cts:json-property-value-query("percentHumudity", 95, "wildcarded") 
    )) 
) 
)[1] 

HTH!

関連する問題