UDTとタプルのクエリー例

UDTクエリーの例。 UDTはタプルの特殊型です。

ネストされたタプルとUDTをCQLリストおよびセット内でクエリーできます。以下の例に示したUDTはタプルの特殊型です。は、UDTに適用されます。

注: CQL SELECT句内のUDTカラム全体を選択することがサポートされています。UDTの各フィールドを選択する操作はサポートされていません。

その他の例については、DataStax開発者によるブログ投稿「DSE SearchでのタプルとUDTサポート」に記載しています。

フィールドのクエリー

{!tuple}address.street:sesame

動的フィールドのクエリー

<dynamicField name="user.position_*" type="text" indexed="true"  stored="true"/>
{!tuple}user.position_day1:second
{!tuple}user.position_day2:first

コレクションのクエリー

{!tuple}user.hobbies:swim

ユーザーと名前がともにUDTであるネストされたタプル/UDTのクエリー

{!tuple}user.name.firstname:Sam

UDT/タプルの各フィールド全体のクエリー

({!tuple}father.name.firstname:Sam AND {!tuple}mother.name.firstname:Anne)

複数の条件を持つUDT/タプルの各フィールドのクエリー

複数の条件を満たすタプルを見つけることができます。例:
{!tuple}address.residents.field1:Alice AND address.residents.field2:Smith
注: 構文の相違点は、タプル全体またはタプル内で検索するかを指定するものです。
  • {!tuple}condition1 AND {!tuple}condition2 AND {!tuple}conditionNは、すべての条件を満たすが、同じ単一のタプル/UDTで満たされるとは限らないドキュメントを検索します。
  • {!tuple}condition1 AND condition2 AND conditionNは、すべての条件を満たすタプル内のドキュメントを検索します。

ネストされたタプルとUDTのクエリー

ネストされたタプルとUDTをクエリーするには、同じドット表記とタプル・クエリー・パーサーを使用します。UDTはタプルを特殊化したものであるため、タプルとUDTにはタプル・クエリー・パーサーを使用します。この例では、ドット表記はaddress.residentをUDTとして識別します。

例に示したネストされたaddress.residentsタプルでは、「Alice」という名の居住者の場所をクエリーできます。
{!tuple}address.residents.field1:Alice
以下の例では、「Alice」という名と「Smith」という姓の居住者の場所をクエリーできます。
{!tuple}address.residents.field1:Alice AND address.residents.field2:Smith
注: タプルとUDTは、ネストされたドキュメントとして内部でモデル化されています。これらをクエリーするには、Solrブロック結合が内部使用されます。親は_parent_=trueフィールドで識別されます。子は_parent_=falseで識別されます。否定クエリーや空のフィールド・クエリーなど、特定のクエリー・タイプの場合は、_parent_フィールドを使用しなければならない場合があります。

空の名のクエリー

否定(-)や包含(+)演算子は、{!tuple}ディレクティブの前に配置する必要があります。

-{!tuple}_parent_:false AND user.name.firstname:[* TO *]

否定クエリー

否定クエリーでは以下の構文が使用されます。
select * from demo where solr_query='-{!tuple}name.firstname:*'
複数の条件を持つ否定クエリーは、Solrルールに従う必要があります。以下の構文を使用します。
{!tuple}address.street:* NOT (address.street:sesame AND address.number:32)