配列演算子

Milvusは配列フィールドを検索するための強力な演算子を提供しており、配列の内容に基づいてエンティティをフィルタリングしたり検索したりすることができます。

配列内の要素はすべて同じ型でなければならず、配列内の入れ子構造はプレーンな文字列として扱われます。したがって、ARRAYフィールドを扱う際には、過度な深い入れ子は避け、 できるだけ平坦なデータ構造にしてパフォーマンスを最適化することを推奨します。

使用可能なARRAY演算子

Milvusでは、ARRAY演算子により、配列フィールドに対するきめ細かな問い合わせが可能です。これらの演算子は以下の通りです:

ARRAY_CONTAINS

ARRAY_CONTAINS 演算子は、配列フィールドに特定の要素が存在するかどうかを調べます。指定した要素が配列内に存在するエンティティを見つけたい場合に便利です。

さまざまな年の最低気温の記録を含む配列フィールドhistory_temperatures があるとします。配列に値23 が含まれるすべてのエンティティを検索するには、以下のフィルタ式を使用できます:

filter = 'ARRAY_CONTAINS(history_temperatures, 23)'

これは、配列history_temperatures に値23 が含まれるすべてのエンティティを返します。

array_contains_all

ARRAY_CONTAINS_ALL 演算子は、指定したリストのすべての要素が配列フィールドに存在することを保証します。この演算子は、配列に複数の値が含まれるエンティティにマッチさせたい場合に便利です。

history_temperatures 配列に2324 の両方が含まれるエンティティをすべて検索する場合は、この演算子を使 用できます:

filter = 'ARRAY_CONTAINS_ALL(history_temperatures, [23, 24])'

これは、history_temperatures 配列に指定した値の両方が含まれるすべてのエンティティを返します。

array_contains_any

ARRAY_CONTAINS_ANY 演算子は、指定したリストの要素が配列フィールドに存在するかどうかを調べます。これは、指定された値の少なくとも 1 つが配列に含まれるエンティティにマッチする場合に便利です。

history_temperatures 配列に23 または24 のいずれかが含まれるエンティティをすべて検索するには、 を使用できます:

filter = 'ARRAY_CONTAINS_ANY(history_temperatures, [23, 24])'

これは、history_temperatures 配列に値23 または24 の少なくともいずれかが含まれるすべてのエンティティを返します。

ARRAY_LENGTH

ARRAY_LENGTH は、配列フィールドの長さ(要素数)を返します。パラメータは 1 つだけで、配列フィールドの識別子です。

history_temperatures 配列の要素数が 10 未満のエンティティをすべて検索する:

filter = 'ARRAY_LENGTH(history_temperatures) < 10'

これは、history_temperatures 配列の要素が 10 未満のすべてのエンティティを返します。

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started
フィードバック

このページは役に立ちましたか ?