STL_SORT
L'indice STL_SORT è un tipo di indice progettato specificamente per migliorare le prestazioni delle query sui campi numerici (INT8, INT16, ecc.), sui campi VARCHAR o sui campi TIMESTAMPTZ all'interno di Milvus, organizzando i dati in un ordine ordinato.
Utilizzare l'indice STL_SORT se si eseguono frequentemente query con:
Filtro di confronto con gli operatori
==,!=,>,<,>=e<=Filtraggio dell'intervallo con gli operatori
INeLIKE
Tipi di dati supportati
Campi numerici (ad esempio,
INT8,INT16,INT32,INT64,FLOAT,DOUBLE). Per maggiori dettagli, consultare la sezione Campi booleani e numerici.VARCHARcampi. Per maggiori dettagli, vedere Campo stringa.TIMESTAMPTZcampi. Per maggiori dettagli, vedere Campo TIMESTAMPTZ.
Come funziona
Milvus implementa STL_SORT in due fasi:
Creazione dell'indice
Durante l'ingestione, Milvus raccoglie tutti i valori del campo indicizzato.
I valori vengono ordinati in ordine crescente utilizzando std::sort dell'STL C++.
Ogni valore viene abbinato all'ID dell'entità e l'array ordinato viene conservato come indice.
Accelerare le query
Al momento dell'interrogazione, Milvus utilizza la ricerca binaria(std::lower_bound e std::upper_bound) sull'array ordinato.
Per l'uguaglianza, Milvus trova rapidamente tutti i valori corrispondenti.
Per gli intervalli, Milvus individua le posizioni iniziali e finali e restituisce tutti i valori intermedi.
Gli ID delle entità corrispondenti vengono passati all'esecutore della query per l'assemblaggio del risultato finale.
Questo riduce la complessità della query da O(n) (scansione completa) a O(log n + m), dove m è il numero di corrispondenze.
Creare un indice STL_SORT
È possibile creare un indice STL_SORT su un campo numerico o TIMESTAMPTZ. Non sono richiesti parametri aggiuntivi.
L'esempio seguente mostra come creare un indice STL_SORT su un campo TIMESTAMPTZ:
from pymilvus import MilvusClient
client = MilvusClient(uri="http://localhost:19530") # Replace with your server address
# Assume you have defined a TIMESTAMPTZ field named "tsz" in your collection schema
# Prepare index parameters
index_params = client.prepare_index_params()
# Add RTREE index on the "tsz" field
index_params.add_index(
field_name="tsz",
index_type="STL_SORT", # Index for TIMESTAMPTZ
index_name="tsz_index", # Optional, name your index
params={} # No extra params needed
)
# Create the index on the collection
client.create_index(
collection_name="tsz_demo",
index_params=index_params
)
Eliminare un indice
Usare il metodo drop_index() per rimuovere un indice esistente da un insieme.
client.drop_index(
collection_name="tsz_demo", # Name of the collection
index_name="tsz_index" # Name of the index to drop
)
Note d'uso
Tipi di campo: Funziona con i campi numerici e
TIMESTAMPTZ. Per ulteriori informazioni sui tipi di dati, consultare Boolean & Number e TIMESTAMPTZ Field.Parametri: Non sono necessari parametri di indice.
Mmap non supportata: La modalità memory-mapped non è disponibile per
STL_SORT.