Основные операторы
Milvus предоставляет богатый набор базовых операторов, которые помогут вам эффективно фильтровать и запрашивать данные. Эти операторы позволяют уточнять условия поиска на основе скалярных полей, числовых вычислений, логических условий и многого другого. Понимание того, как использовать эти операторы, очень важно для создания точных запросов и повышения эффективности поиска.
Операторы сравнения
Операторы сравнения используются для фильтрации данных на основе равенства, неравенства или размера. Они применимы к числовым, текстовым полям и полям даты.
Поддерживаемые операторы сравнения.
==
(Равно)!=
(Не равно)>
(Больше, чем)<
(Меньше, чем)>=
(Больше или равно)<=
(Меньше или равно)
Пример 1: Фильтрация с помощью Greater Than or Equal To (>=
)
Если вы хотите найти все сущности с rating
больше или равно 4.
filter = 'rating >= 4'
Пример 2: Фильтрация с помощью Less Than or Equal To (<=
)
Чтобы найти сущности с discount
меньше или равным 10%.
filter = 'discount <= 10'
Операторы диапазона
Операторы диапазона помогают фильтровать данные на основе определенных наборов или диапазонов значений.
Поддерживаемые операторы диапазона.
IN
: Используются для поиска значений в определенном наборе или диапазоне.LIKE
: : Используется для поиска шаблона (в основном для текстовых полей).
Пример 1: Использование IN
для поиска нескольких значений
Если вы хотите найти все сущности, для которых color
является либо "красным", либо "зеленым", либо "синим".
filter = 'color in ["red", "green", "blue"]'
Это полезно, когда нужно проверить принадлежность к списку значений.
Пример 2: Использование LIKE
для сопоставления с образцом
Оператор LIKE
используется для поиска шаблонов в строковых полях. Он может сопоставлять подстроки в различных позициях в тексте: в качестве префикса, инфикса или суффикса. Оператор LIKE
использует символ %
в качестве подстановочного знака, который может соответствовать любому количеству символов (включая ноль).
Префиксное совпадение (начинается с)
Чтобы выполнить префиксное совпадение, при котором строка начинается с заданного шаблона, можно поместить шаблон в начало и использовать оператор %
для соответствия всем символам, следующим за ним. Например, чтобы найти все продукты, чье name
начинается с "Prod".
filter = 'name LIKE "Prod%"'
В этом случае будет найден любой продукт, название которого начинается с "Prod", например "Product A", "Product B" и т. д.
Суффиксное совпадение (заканчивается на)
Для суффиксного совпадения, когда строка заканчивается заданным шаблоном, поместите символ %
в начало шаблона. Например, чтобы найти все продукты, чей name
заканчивается на "XYZ".
filter = 'name LIKE "%XYZ"'
В этом случае будет найден любой продукт, название которого заканчивается на "XYZ", например "ProductXYZ", "SampleXYZ" и т. д.
Инфиксное совпадение (Contains)
Чтобы выполнить инфиксное совпадение, при котором шаблон может встречаться в любом месте строки, вы можете поместить символ %
как в начало, так и в конец шаблона. Например, чтобы найти все продукты, в названии которых 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 предлагает ряд базовых операторов, которые обеспечивают гибкость при фильтрации и запросе данных. Комбинируя операторы сравнения, диапазона, арифметические и логические операторы, вы можете создавать мощные выражения фильтрации для сужения результатов поиска и эффективного извлечения нужных данных.