基本演算子
Milvusはデータのフィルタリングやクエリを効率的に行うための豊富な基本演算子を提供しています。これらの演算子を使用すると、スカラーフィールド、数値計算、論理条件などに基づいて検索条件を絞り込むことができます。これらの演算子の使い方を理解することは、正確なクエリを構築し、検索の効率を最大限に高めるために非常に重要です。
比較演算子
比較演算子は、等式、不等式、またはサイズに基づいてデータをフィルタリングするために使用されます。数値フィールド、テキストフィールド、日付フィールドに適用できます。
サポートされている比較演算子
==
(等しい!=
(等しくない>
(より大きい<
(より小さい>=
(大以上)<=
以下
例 1:Equal To (==
) によるフィルタリング
status
というフィールドがあり、status
が "active" であるすべてのエンティティを検索したいとします。等号演算子==
を使用できます。
filter = 'status == "active"'
例 2:Not Equal To (!=
) を使ったフィルタリング
status
が「非アクティブ」でないエンティティを見つける。
filter = 'status != "inactive"'
例 3:Greater Than (>
) によるフィルタリング
age
が 30 より大きいエンティティをすべて検索する場合。
filter = 'age > 30'
例4: Less Than (<
) によるフィルタリング
price
が 100 未満のエンティティを検索する場合。
filter = 'price < 100'
例 5:Greater Than または Equal To (>=
) によるフィルタリング
rating
が 4 以上のエンティティをすべて検索する場合。
filter = 'rating >= 4'
例 6:Less Than or Equal To (<=
) によるフィルタリング
discount
が 10% 以下のエンティティを検索する場合。
filter = 'discount <= 10'
範囲演算子
範囲演算子は、特定の値の集合または範囲に基づいてデータをフィルタリングするのに役立ちます。
サポートされている範囲演算子。
IN
:特定のセットまたは範囲内の値をマッチさせるために使用されます。LIKE
:パターンにマッチさせるために使用します(主にテキストフィールドの場合)。
例 1:IN
を使用して複数の値に一致させる
color
が "red"、"green"、または "blue" のいずれかであるすべてのエンティティを検索する場合。
filter = 'color in ["red", "green", "blue"]'
これは、値のリストに含まれるかどうかを調べたいときに便利です。
例 2:LIKE
を使ったパターンマッチング
LIKE
演算子は文字列フィールドのパターンマッチングに使われます。この演算子は、プレフィックス、インフィックス、サフィックスなど、テキスト内のさまざまな位置の部分文字列にマッチさせることができます。LIKE
演算子は%
シンボルをワイルドカードとして使い、任意の文字数(ゼロを含む)にマッチさせることができます。
プレフィックスマッチ(Starts With)
文字列が指定したパターンで始まるようなプレフィックスマッチを行うには、パターンを先頭に置き、%
を使って、それに続く文字にマッチさせることができます。たとえば、name
が "Prod" で始まるすべての製品を検索する場合。
filter = 'name LIKE "Prod%"'
これは、"Product A"、"Product B "など、商品名が "Prod "で始まるすべての商品にマッチします。
接尾辞マッチ(End With
文字列が指定されたパターンで終わる接尾辞マッチの場合、%
シンボルをパターンの先頭に置きます。例えば、name
が "XYZ" で終わるすべての製品を検索する場合。
filter = 'name LIKE "%XYZ"'
この場合、"ProductXYZ"、"SampleXYZ "など、製品名が "XYZ "で終わるすべての製品にマッチします。
接尾辞マッチ(含む
文字列のどこにでもパターンが出現するようなinfixマッチを行うには、%
シンボルをパターンの最初と最後の両方に置きます。たとえば、name
に "Pro" という単語が含まれるすべての製品を検索します。
filter = 'name LIKE "%Pro%"'
これは、"Product"、"ProLine"、"SuperPro "など、製品名に "Pro "という部分文字列が含まれるすべての製品にマッチします。
算術演算子
算術演算子を使用すると、数値フィールドを含む計算に基づいて条件を作成できます。
サポートされる算術演算子
+
(加算)-
(減算)*
(乗算)/
(除算)%
(モジュラス**
指数
例 1: 足し算の使用 (+
)
total
の価格がbase_price
とtax
の合計であるエンティティを見つける。
filter = 'total == base_price + tax'
例2: 減算 (-
) の使用
quantity
が 50 より大きく、quantity_sold
が 30 より小さいエンティティを見つける。
filter = 'quantity - quantity_sold > 50'
例3: 乗算を使う (*
)
price
が 100 より大きく、quantity
が 10 より大きい、乗算されたエンティティを見つけるには。
filter = 'price * quantity > 1000'
例 4: 除算の使用 (/
)
total_price
をquantity
で割った値が 50 未満である実体を見つける。
filter = 'total_price / quantity < 50'
例5:モジュラス (%
) の使用
id
が偶数(すなわち、2で割り切れる)である実体を見つけるには。
filter = 'id % 2 == 0'
例6: 指数を使う (**
)
price
の 2 乗が 1000 より大きいエンティティを見つける。
filter = 'price ** 2 > 1000'
論理演算子
論理演算子は、複数の条件を組み合わせて、より複雑なフィルタ式にするために使用します。これにはAND
、OR
、およびNOT
が含まれます。
サポートされている論理演算子
AND
:すべて真でなければならない複数の条件を組み合わせます。OR
:少なくとも1つが真でなければならない条件を組み合わせる。NOT
:条件を否定する。
例 1:AND
を使って条件を組み合わせる
price
が 100 より大きく、stock
が 50 より大きい製品をすべて見つける。
filter = 'price > 100 AND stock > 50'
例 2:OR
を使って条件を組み合わせる
color
が「赤」または「青」であるすべての製品を検索する。
filter = 'color == "red" OR color == "blue"'
例 3:NOT
を使って条件を除外する
color
が "green" でないすべての商品を見つける。
filter = 'NOT color == "green"'
JSONとARRAYフィールドで基本演算子を使うヒント
Milvusの基本演算子は汎用性が高く、スカラーフィールドに適用することができますが、JSONやARRAYフィールドのキーやインデックスにも効果的に使用することができます。
例えば、price
,model
,tags
のような複数のキーを含むproduct
フィールドがある場合、常にキーを直接参照します。
filter = 'product["price"] > 1000'
記録された気温の配列の最初の気温が特定の値を超えているレコードを検索するには、次のように使用する。
filter = 'history_temperatures[0] > 30'
結論
Milvusには基本的な演算子が揃っており、データのフィルタリングやクエリを柔軟に行うことができます。比較演算子、範囲演算子、算術演算子、論理演算子を組み合わせることで、検索結果を絞り込み、必要なデータを効率的に取得するための強力なフィルタ式を作成することができます。