Operadores básicos
Milvus fornece um conjunto rico de operadores básicos para o ajudar a filtrar e consultar dados de forma eficiente. Estes operadores permitem-lhe refinar as suas condições de pesquisa com base em campos escalares, cálculos numéricos, condições lógicas, e muito mais. Compreender como usar estes operadores é crucial para construir consultas precisas e maximizar a eficiência das suas pesquisas.
Operadores de comparação
Os operadores de comparação são utilizados para filtrar dados com base na igualdade, desigualdade ou tamanho. Eles são aplicáveis a campos numéricos, de texto e de data.
Operadores de comparação suportados.
==
(Igual a)!=
(Não igual a)>
(Maior que)<
(Menor que)>=
(Maior que ou igual a)<=
(Menor ou igual a)
Exemplo 1: Filtragem com Equal To (==
)
Suponha que tem um campo chamado status
e quer encontrar todas as entidades em que status
está "ativo". Você pode usar o operador de igualdade ==
.
filter = 'status == "active"'
Exemplo 2: Filtragem com Not Equal To (!=
)
Para encontrar entidades onde status
não é "inativo".
filter = 'status != "inactive"'
Exemplo 3: Filtragem com Greater Than (>
)
Se você quiser encontrar todas as entidades com um age
maior que 30.
filter = 'age > 30'
Exemplo 4: Filtrando com Menor que (<
)
Para encontrar entidades onde price
é menor que 100.
filter = 'price < 100'
Exemplo 5: Filtrando com Maior ou Igual a (>=
)
Se você quiser encontrar todas as entidades com rating
maior ou igual a 4.
filter = 'rating >= 4'
Exemplo 6: Filtrando com Menor que ou Igual a (<=
)
Para encontrar entidades com discount
menor ou igual a 10%.
filter = 'discount <= 10'
Operadores de intervalo
Os operadores de intervalo ajudam a filtrar dados com base em conjuntos específicos ou intervalos de valores.
Operadores de intervalo suportados.
IN
: Utilizados para fazer a correspondência de valores dentro de um conjunto ou intervalo específico.LIKE
: Usado para corresponder a um padrão (principalmente para campos de texto).
Exemplo 1: Usando IN
para corresponder a vários valores
Se você quiser encontrar todas as entidades onde o color
é "vermelho", "verde" ou "azul".
filter = 'color in ["red", "green", "blue"]'
Isso é útil quando se deseja verificar a associação em uma lista de valores.
Exemplo 2: Usando LIKE
para correspondência de padrão
O operador LIKE
é utilizado para correspondência de padrões em campos de cadeia de caracteres. Ele pode corresponder substrings em diferentes posições dentro do texto: como um prefixo, infixo ou sufixo. O operador LIKE
utiliza o símbolo %
como um wildcard, que pode corresponder a qualquer número de caracteres (incluindo zero).
Correspondência de prefixo (começa com)
Para efetuar uma correspondência de prefixo, em que a cadeia de caracteres começa com um determinado padrão, pode colocar o padrão no início e utilizar %
para corresponder a quaisquer caracteres a seguir. Por exemplo, para encontrar todos os produtos cujo name
comece por "Prod".
filter = 'name LIKE "Prod%"'
Isto irá corresponder a qualquer produto cujo nome comece por "Prod", como "Produto A", "Produto B", etc.
Correspondência de sufixo (termina com)
Para uma correspondência de sufixo, em que a cadeia de caracteres termina com um determinado padrão, coloque o símbolo %
no início do padrão. Por exemplo, para encontrar todos os produtos cujo name
termina com "XYZ".
filter = 'name LIKE "%XYZ"'
Isto corresponderá a qualquer produto cujo nome termine com "XYZ", como "ProductXYZ", "SampleXYZ", etc.
Correspondência de infixos (Contém)
Para efetuar uma correspondência infixa, em que o padrão pode aparecer em qualquer parte da cadeia de caracteres, pode colocar o símbolo %
no início e no fim do padrão. Por exemplo, para encontrar todos os produtos cujo name
contenha a palavra "Pro".
filter = 'name LIKE "%Pro%"'
Isso corresponderá a qualquer produto cujo nome contenha a substring "Pro", como "Product", "ProLine" ou "SuperPro".
Operadores aritméticos
Os operadores aritméticos permitem-lhe criar condições com base em cálculos que envolvem campos numéricos.
Operadores aritméticos suportados.
+
(Adição)-
(Subtração)*
(Multiplicação)/
(Divisão)%
(Módulo)**
(Exponenciação)
Exemplo 1: Utilizar a adição (+
)
Para encontrar entidades onde o preço total
é a soma de base_price
e tax
.
filter = 'total == base_price + tax'
Exemplo 2: Usando Subtração (-
)
Para encontrar entidades onde quantity
é maior que 50 e quantity_sold
é menor que 30.
filter = 'quantity - quantity_sold > 50'
Exemplo 3: Usando Multiplicação (*
)
Para encontrar entidades onde price
é maior que 100 e quantity
é maior que 10, multiplicado.
filter = 'price * quantity > 1000'
Exemplo 4: Utilizar a divisão (/
)
Para encontrar produtos em que total_price
dividido por quantity
é menor que 50.
filter = 'total_price / quantity < 50'
Exemplo 5: Usando Modulus (%
)
Para encontrar entidades onde o id
é um número par (ou seja, divisível por 2).
filter = 'id % 2 == 0'
Exemplo 6: Usando Exponenciação (**
)
Para encontrar entidades onde price
elevado à potência de 2 é maior que 1000.
filter = 'price ** 2 > 1000'
Operadores lógicos
Os operadores lógicos são usados para combinar várias condições em uma expressão de filtro mais complexa. Estes incluem AND
, OR
, e NOT
.
Operadores lógicos suportados.
AND
: Combina várias condições que devem ser todas verdadeiras.OR
: Combina condições em que pelo menos uma deve ser verdadeira.NOT
: Nega uma condição.
Exemplo 1: Usando AND
para combinar condições
Para encontrar todos os produtos em que price
é maior que 100 e stock
é maior que 50.
filter = 'price > 100 AND stock > 50'
Exemplo 2: Usando OR
para combinar condições
Para encontrar todos os produtos em que color
é "red" (vermelho) ou "blue" (azul).
filter = 'color == "red" OR color == "blue"'
Exemplo 3: Usando NOT
para excluir uma condição
Para encontrar todos os produtos em que color
não seja "verde".
filter = 'NOT color == "green"'
Dicas sobre como usar operadores básicos com campos JSON e ARRAY
Embora os operadores básicos do Milvus sejam versáteis e possam ser aplicados a campos escalares, eles também podem ser usados de forma eficaz com as chaves e índices nos campos JSON e ARRAY.
Por exemplo, se tiver um campo product
que contenha várias chaves como price
, model
, e tags
, faça sempre referência à chave diretamente.
filter = 'product["price"] > 1000'
Para encontrar registos em que a primeira temperatura de uma matriz de temperaturas registadas excede um determinado valor, utilize.
filter = 'history_temperatures[0] > 30'
Conclusão
O Milvus oferece uma gama de operadores básicos que lhe dão flexibilidade na filtragem e consulta dos seus dados. Ao combinar operadores de comparação, de intervalo, aritméticos e lógicos, pode criar expressões de filtragem poderosas para restringir os resultados da pesquisa e obter os dados de que necessita de forma eficiente.