2011-11-01 9 views
7

多値プロパティーの入力パラメーターとして、1つ以上の値を使用してコンテンツ・リポジトリー内で検索したい 次のようなものがあります。主タイプ 'nt:unstructured'プロパティ 'multiprop'(多値プロパティ)には、値「one」と「two」が含まれています。JCR SQL2複数値プロパティー検索

queryString.createQueryに渡されるqueryStringはどのようにloookする必要がありますか?

ありがとうございます。

答えて

13

他の基準と同じように、複数の値を持つプロパティで条件を扱うことができます。 「someProp」プロパティは、その後、少なくとも一つのノードを複数の値を持つ場合

SELECT * FROM [nt:unstructured] WHERE someProp = 'white dog' 

を:たとえば、次のクエリは、「someProp」プロパティに「白い犬」の値を持つすべてのノードを検索します基準を満たす値が結果に含まれます。

複数値のプロパティの複数の値を持つノードを見つけるには、単純に複数の条件をANDで結合します。たとえば、次のクエリでは、指定された値の両方を持っているすべてのノードを返します。

SELECT * FROM [nt:unstructured] WHERE someProp = 'white dog' 
            AND someProp = 'black dog' 

事業者のいずれもが「LIKE」を含め、動作します:

SELECT * FROM [nt:unstructured] WHERE someProp LIKE '%white%' 
            AND someProp LIKE '%black%' 

他の組み合わせが可能である、とコース。

+1

ありがとうございます。質問:してください:これらの2つのソリューションは、よりperformantですか?それとも同じパフォーマンスが得られるはずですか? – silverb77

+0

答えを得る前に、someProp LIKE '%black%'のようなものを試してみましたが、これはむしろ遅いようです...これは、=の代わりにLIKEを使用していたからですか? – silverb77

+0

最終的に質問してください:パフォーマンスについて考えると、getNodeを使って "手動"検索を行い、入力パラメータに対して各プロパティの値をチェックするか、JCR SQL2 SELECTを実行しますか?どうもありがとう。 – silverb77