STL_SORT
Der STL_SORT Index ist ein Indextyp, der speziell dafür entwickelt wurde, die Abfrageleistung für numerische Felder (INT8, INT16, etc.), VARCHAR Felder oder TIMESTAMPTZ Felder innerhalb von Milvus zu verbessern, indem die Daten in einer sortierten Reihenfolge organisiert werden.
Verwenden Sie den STL_SORT Index, wenn Sie häufig Abfragen mit:
Vergleichsfilterung mit den Operatoren
==,!=,>,<,>=, und<=Bereichsfilterung mit den Operatoren
INundLIKE
Unterstützte Datentypen
Numerische Felder (z. B.
INT8,INT16,INT32,INT64,FLOAT,DOUBLE). Einzelheiten finden Sie unter Boolesche & Zahlen.VARCHARFelder. Weitere Informationen finden Sie unter String-Feld.TIMESTAMPTZFelder. Weitere Informationen finden Sie unter TIMESTAMPTZ-Feld.
Wie es funktioniert
Milvus implementiert STL_SORT in zwei Phasen:
Index aufbauen
Während der Aufnahme sammelt Milvus alle Werte für das indizierte Feld.
Die Werte werden in aufsteigender Reihenfolge mit std::sort der C++ STL sortiert.
Jeder Wert wird mit seiner Entitäts-ID gepaart, und das sortierte Array wird als Index persistiert.
Abfragen bescheunigen
Zur Abfragezeit verwendet Milvus eine binäre Suche(std::lower_bound und std::upper_bound) für das sortierte Array.
Bei Gleichheit findet Milvus schnell alle übereinstimmenden Werte.
Bei Bereichen findet Milvus die Start- und Endpositionen und gibt alle Werte dazwischen zurück.
Die übereinstimmenden Entitäts-IDs werden zur endgültigen Zusammenstellung der Ergebnisse an den Abfrageexecutor weitergeleitet.
Dies reduziert die Abfragekomplexität von O(n) (vollständiger Scan) auf O(log n + m), wobei m die Anzahl der Übereinstimmungen ist.
Einen STL_SORT-Index erstellen
Sie können einen STL_SORT Index für ein numerisches oder TIMESTAMPTZ Feld erstellen. Es sind keine zusätzlichen Parameter erforderlich.
Das folgende Beispiel zeigt, wie Sie einen STL_SORT Index für ein TIMESTAMPTZ Feld erstellen:
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
)
Löschen eines Index
Verwenden Sie die Methode drop_index(), um einen bestehenden Index aus einer Sammlung zu entfernen.
client.drop_index(
collection_name="tsz_demo", # Name of the collection
index_name="tsz_index" # Name of the index to drop
)
Hinweise zur Verwendung
Feldtypen: Funktioniert mit numerischen und
TIMESTAMPTZFeldern. Weitere Informationen zu den Datentypen finden Sie unter Boolesche und numerische Felder und TIMESTAMPTZ-Felder.Parameter: Es werden keine Indexparameter benötigt.
Mmap nicht unterstützt: Der Modus "Memory-mapped" ist für
STL_SORTnicht verfügbar.