STL_SORT
L'index STL_SORT est un type d'index spécialement conçu pour améliorer les performances des requêtes sur les champs numériques (INT8, INT16, etc.), les champs VARCHAR ou les champs TIMESTAMPTZ dans Milvus en organisant les données dans un ordre trié.
Utilisez l'index STL_SORT si vous exécutez fréquemment des requêtes avec :
Filtrage par comparaison avec les opérateurs
==,!=,>,<,>=, et<=Filtrage par plage avec les opérateurs
INetLIKE
Types de données pris en charge
Champs numériques (par exemple,
INT8,INT16,INT32,INT64,FLOAT,DOUBLE). Pour plus d'informations, reportez-vous à la section Champs booléens et numériques.VARCHARLes champs de type "String". Pour plus d'informations, reportez-vous à la section Champ de type chaîne de caractères.TIMESTAMPTZchamps. Pour plus d'informations, reportez-vous au champ TIMESTAMPTZ.
Fonctionnement
Milvus met en œuvre STL_SORT en deux phases :
Construction de l'index
Pendant l'ingestion, Milvus collecte toutes les valeurs du champ indexé.
Les valeurs sont triées par ordre croissant à l'aide de la fonction std::sort de la STL C++.
Chaque valeur est associée à l'ID de l'entité et le tableau trié est conservé en tant qu'index.
Accélérer les requêtes
Au moment de la requête, Milvus utilise la recherche binaire(std::lower_bound et std::upper_bound) sur le tableau trié.
Pour l'égalité, Milvus trouve rapidement toutes les valeurs correspondantes.
Pour les plages, Milvus localise les positions de début et de fin et renvoie toutes les valeurs intermédiaires.
Les identifiants des entités correspondantes sont transmis à l'exécuteur de la requête pour l'assemblage du résultat final.
Cela réduit la complexité de la requête de O(n) (balayage complet) à O(log n + m), où m est le nombre de correspondances.
Créer un index STL_SORT
Vous pouvez créer un index STL_SORT sur un champ numérique ou TIMESTAMPTZ. Aucun paramètre supplémentaire n'est nécessaire.
L'exemple ci-dessous montre comment créer un index STL_SORT sur un champ 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
)
Supprimer un index
Utilisez la méthode drop_index() pour supprimer un index existant d'une collection.
client.drop_index(
collection_name="tsz_demo", # Name of the collection
index_name="tsz_index" # Name of the index to drop
)
Notes d'utilisation
Types de champs : Fonctionne avec les champs numériques et
TIMESTAMPTZ. Pour plus d'informations sur les types de données, reportez-vous aux rubriques Boolean & Number et TIMESTAMPTZ Field.Paramètres : Aucun paramètre d'index n'est nécessaire.
Mmap non pris en charge : Le mode "Memory-mapped" n'est pas disponible pour
STL_SORT.