基本操作符
Milvus 提供丰富的基本操作符,帮助您高效地过滤和查询数据。这些操作符允许您根据标量字段、数字计算、逻辑条件等来完善搜索条件。了解如何使用这些操作符对于建立精确查询和最大限度地提高搜索效率至关重要。
比较操作符
比较操作符用于根据相等、不等或大小过滤数据。它们适用于数字、文本和日期字段。
支持的比较操作符。
==
等于!=
(不等于>
大于<
小于>=
(大于或等于<=
(小于或等于
例 1:使用 "等于 "进行筛选 (==
)
假设有一个名为status
的字段,您想查找status
为 "活动 "的所有实体。您可以使用相等操作符==
。
filter = 'status == "active"'
例 2:使用不等于 (!=
) 过滤
查找status
不是 "非活动 "的实体。
filter = 'status != "inactive"'
例 3:使用大于 (>
) 进行筛选
如果要查找age
大于 30 的所有实体。
filter = 'age > 30'
例 4:使用小于 (<
) 过滤
要查找price
小于 100 的实体。
filter = 'price < 100'
例 5:使用大于或等于 (>=
) 过滤
如果要查找rating
大于或等于 4 的所有实体。
filter = 'rating >= 4'
例 6:使用小于或等于 (<=
) 过滤
要查找discount
小于或等于 10% 的实体。
filter = 'discount <= 10'
范围操作符
范围操作符有助于根据特定的值集或范围过滤数据。
支持的范围操作符。
IN
:用于匹配特定集合或范围内的值。LIKE
:用于匹配模式(主要用于文本字段)。
例 1:使用IN
匹配多个值
如果要查找color
为 "红色"、"绿色 "或 "蓝色 "的所有实体。
filter = 'color in ["red", "green", "blue"]'
当您要检查值列表中的成员资格时,这很有用。
例 2:使用LIKE
进行模式匹配
LIKE
操作符用于字符串字段中的模式匹配。它可以匹配文本中不同位置的子串:前缀、后缀或后缀。LIKE
操作符使用%
符号作为通配符,可以匹配任意数量的字符(包括 0)。
前缀匹配(从开始
要执行前缀匹配,即字符串以给定的模式开始,可以将模式放在开头,然后使用%
匹配其后的任何字符。例如,要查找name
以 "Prod "开头的所有产品。
filter = 'name LIKE "Prod%"'
这将匹配名称以 "Prod "开头的任何产品,如 "Product A"、"Product B "等。
后缀匹配(以 "结束 "结尾
在后缀匹配中,如果字符串以给定的模式结尾,则将%
符号放在模式的开头。例如,查找name
以 "XYZ "结尾的所有产品。
filter = 'name LIKE "%XYZ"'
这将匹配名称以 "XYZ "结尾的任何产品,如 "ProductXYZ"、"SampleXYZ "等。
后缀匹配(包含
要执行词缀匹配,即模式可以出现在字符串的任何位置,可以在模式的开头和结尾处都加上%
符号。例如,要查找name
中包含 "Pro "一词的所有产品。
filter = 'name LIKE "%Pro%"'
这将匹配名称包含子串 "Pro "的任何产品,如 "Product"、"ProLine "或 "SuperPro"。
算术操作符
算术操作符允许您根据涉及数字字段的计算创建条件。
支持的算术操作符。
+
加法-
减法*
乘法/
除法%
模乘**
幂
例 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
:组合至少一个必须为真的条件。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
不是 "绿色 "的所有产品。
filter = 'NOT color == "green"'
在 JSON 和 ARRAY 字段中使用基本操作符的提示
虽然 Milvus 的基本操作符用途广泛,可以应用于标量字段,但它们也可以有效地与 JSON 和 ARRAY 字段中的键和索引一起使用。
例如,如果product
字段包含多个键,如price
、model
和tags
,则始终直接引用键。
filter = 'product["price"] > 1000'
要查找记录温度的数组中第一个温度超过特定值的记录,请使用。
filter = 'history_temperatures[0] > 30'
结论
Milvus 提供了一系列基本操作符,让您可以灵活地过滤和查询数据。通过结合比较、范围、算术和逻辑操作符,您可以创建功能强大的过滤表达式,从而缩小搜索结果的范围,并高效检索所需的数据。