Operatori di base
Milvus offre una ricca serie di operatori di base che aiutano a filtrare e interrogare i dati in modo efficiente. Questi operatori consentono di affinare le condizioni di ricerca in base a campi scalari, calcoli numerici, condizioni logiche e altro ancora. Capire come usare questi operatori è fondamentale per creare query precise e massimizzare l'efficienza delle ricerche.
Operatori di confronto
Gli operatori di confronto sono utilizzati per filtrare i dati in base all'uguaglianza, alla disuguaglianza o alla dimensione. Sono applicabili a campi numerici, di testo e di date.
Operatori di confronto supportati.
==
(uguale a)!=
(Non uguale a)>
(Maggiore di)<
(minore di)>=
(Maggiore o uguale a)<=
(Minore o uguale a)
Esempio 1: Filtraggio con Equal To (==
)
Si supponga di avere un campo chiamato status
e di voler trovare tutte le entità in cui status
è "attivo". Si può usare l'operatore di uguaglianza ==
.
filter = 'status == "active"'
Esempio 2: Filtro con Not Equal To (!=
)
Per trovare le entità in cui status
non è "inattivo".
filter = 'status != "inactive"'
Esempio 3: Filtro con Maggiore di (>
)
Se si vogliono trovare tutte le entità con un age
superiore a 30.
filter = 'age > 30'
Esempio 4: Filtraggio con Meno di (<
)
Per trovare le entità in cui price
è inferiore a 100.
filter = 'price < 100'
Esempio 5: Filtro con Maggiore o uguale a (>=
)
Se si desidera trovare tutte le entità con rating
maggiore o uguale a 4.
filter = 'rating >= 4'
Esempio 6: Filtro con meno o uguale a (<=
)
Per trovare le entità con discount
minore o uguale a 10%.
filter = 'discount <= 10'
Operatori di intervallo
Gli operatori di intervallo aiutano a filtrare i dati in base a specifici insiemi o intervalli di valori.
Operatori di intervallo supportati.
IN
: Utilizzati per trovare valori all'interno di un insieme o di un intervallo specifico.LIKE
: Utilizzati per corrispondere a uno schema (soprattutto per i campi di testo).
Esempio 1: Uso di IN
per abbinare più valori
Se si vogliono trovare tutte le entità in cui color
è "rosso", "verde" o "blu".
filter = 'color in ["red", "green", "blue"]'
Questo è utile quando si vuole verificare l'appartenenza a un elenco di valori.
Esempio 2: Uso di LIKE
per la corrispondenza dei modelli
L'operatore LIKE
è utilizzato per la corrispondenza di modelli nei campi stringa. Può corrispondere a sottostringhe in diverse posizioni all'interno del testo: come prefisso, infisso o suffisso. L'operatore LIKE
utilizza il simbolo %
come carattere jolly, che può corrispondere a qualsiasi numero di caratteri (incluso zero).
Corrispondenza di prefisso (inizia con)
Per eseguire una corrispondenza di prefisso, in cui la stringa inizia con un determinato schema, è possibile posizionare lo schema all'inizio e utilizzare %
per abbinare tutti i caratteri che lo seguono. Ad esempio, per trovare tutti i prodotti il cui name
inizia con "Prod".
filter = 'name LIKE "Prod%"'
Questo corrisponderà a tutti i prodotti il cui nome inizia con "Prod", come "Product A", "Product B", ecc.
Corrispondenza per suffisso (finisce con)
Per una corrispondenza di suffisso, in cui la stringa termina con un determinato modello, inserire il simbolo %
all'inizio del modello. Ad esempio, per trovare tutti i prodotti il cui name
termina con "XYZ".
filter = 'name LIKE "%XYZ"'
Questo corrisponderà a tutti i prodotti il cui nome termina con "XYZ", come "ProductXYZ", "SampleXYZ", ecc.
Corrispondenza infissa (contiene)
Per eseguire una corrispondenza infissa, in cui il modello può apparire in qualsiasi punto della stringa, è possibile inserire il simbolo %
sia all'inizio che alla fine del modello. Ad esempio, per trovare tutti i prodotti il cui name
contiene la parola "Pro".
filter = 'name LIKE "%Pro%"'
Questo corrisponde a tutti i prodotti il cui nome contiene la sottostringa "Pro", come "Product", "ProLine" o "SuperPro".
Operatori aritmetici
Gli operatori aritmetici consentono di creare condizioni basate su calcoli che coinvolgono campi numerici.
Operatori aritmetici supportati.
+
(Addizione)-
(Sottrazione)*
(Moltiplicazione)/
(Divisione)%
(Modulo)**
(Esponenziazione)
Esempio 1: Uso dell'addizione (+
)
Per trovare entità in cui il prezzo total
è la somma di base_price
e tax
.
filter = 'total == base_price + tax'
Esempio 2: Uso della sottrazione (-
)
Per trovare le entità in cui quantity
è superiore a 50 e quantity_sold
è inferiore a 30.
filter = 'quantity - quantity_sold > 50'
Esempio 3: Utilizzo della moltiplicazione (*
)
Per trovare le entità in cui price
è maggiore di 100 e quantity
è maggiore di 10, moltiplicato.
filter = 'price * quantity > 1000'
Esempio 4: Utilizzo della divisione (/
)
Per trovare prodotti in cui total_price
diviso per quantity
è inferiore a 50.
filter = 'total_price / quantity < 50'
Esempio 5: Utilizzo del modulo (%
)
Per trovare entità in cui id
è un numero pari (cioè divisibile per 2).
filter = 'id % 2 == 0'
Esempio 6: Uso dell'esponenziazione (**
)
Per trovare le entità in cui price
elevato a potenza di 2 è maggiore di 1000.
filter = 'price ** 2 > 1000'
Operatori logici
Gli operatori logici vengono utilizzati per combinare più condizioni in un'espressione di filtro più complessa. Questi includono AND
, OR
e NOT
.
Operatori logici supportati.
AND
: Combina più condizioni che devono essere tutte vere.OR
: Combina condizioni in cui almeno una deve essere vera.NOT
: Annulla una condizione.
Esempio 1: Uso di AND
per combinare le condizioni
Per trovare tutti i prodotti in cui price
è superiore a 100 e stock
è superiore a 50.
filter = 'price > 100 AND stock > 50'
Esempio 2: Uso di OR
per combinare le condizioni
Per trovare tutti i prodotti in cui color
è "rosso" o "blu".
filter = 'color == "red" OR color == "blue"'
Esempio 3: Usare NOT
per escludere una condizione
Per trovare tutti i prodotti in cui color
non è "verde".
filter = 'NOT color == "green"'
Suggerimenti per l'uso degli operatori di base con i campi JSON e ARRAY
Gli operatori di base di Milvus sono versatili e possono essere applicati ai campi scalari, ma possono essere utilizzati efficacemente anche con le chiavi e gli indici dei campi JSON e ARRAY.
Ad esempio, se si dispone di un campo product
che contiene più chiavi come price
, model
e tags
, fare sempre riferimento direttamente alla chiave.
filter = 'product["price"] > 1000'
Per trovare i record in cui la prima temperatura in un array di temperature registrate supera un determinato valore, utilizzare.
filter = 'history_temperatures[0] > 30'
Conclusione
Milvus offre una serie di operatori di base che consentono di filtrare e interrogare i dati in modo flessibile. Combinando operatori di confronto, di intervallo, aritmetici e logici, è possibile creare potenti espressioni di filtro per restringere i risultati della ricerca e recuperare i dati necessari in modo efficiente.