STL_SORT
El índice STL_SORT es un tipo de índice diseñado específicamente para mejorar el rendimiento de las consultas en campos numéricos (INT8, INT16, etc.), campos VARCHAR o campos TIMESTAMPTZ dentro de Milvus organizando los datos en un orden ordenado.
Utilice el índice STL_SORT si ejecuta con frecuencia consultas con:
Filtrado por comparación con los operadores
==,!=,>,<,>=, y<=Filtrado de rangos con los operadores
INyLIKE
Tipos de datos admitidos
Campos numéricos (por ejemplo,
INT8,INT16,INT32,INT64,FLOAT,DOUBLE). Para más detalles, consulte Boolean & Number.VARCHARcampos. Para obtener más información, consulte Campo de cadena.TIMESTAMPTZcampos. Para obtener más información, consulte Campo TIMESTAMPTZ.
Cómo funciona
Milvus implementa STL_SORT en dos fases:
Construcción del índice
Durante la ingesta, Milvus recopila todos los valores del campo indexado.
Los valores se ordenan en orden ascendente utilizando std::sort de C++ STL.
Cada valor se empareja con su ID de entidad y la matriz ordenada se mantiene como índice.
Acelerar las consultas
En el momento de la consulta, Milvus utiliza la búsqueda binaria(std::lower_bound y std::upper_bound) en la matriz ordenada.
Para igualdades, Milvus encuentra rápidamente todos los valores coincidentes.
Para rangos, Milvus localiza las posiciones inicial y final y devuelve todos los valores intermedios.
Los ID de entidad coincidentes se pasan al ejecutor de la consulta para el ensamblaje del resultado final.
Esto reduce la complejidad de la consulta de O(n) (exploración completa) a O(log n + m), donde m es el número de coincidencias.
Creación de un índice STL_SORT
Puede crear un índice STL_SORT en un campo numérico o TIMESTAMPTZ. No se requieren parámetros adicionales.
El siguiente ejemplo muestra cómo crear un índice STL_SORT en 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
)
Eliminar un índice
Utilice el método drop_index() para eliminar un índice existente de una colección.
client.drop_index(
collection_name="tsz_demo", # Name of the collection
index_name="tsz_index" # Name of the index to drop
)
Notas de uso
Tipos de campo: Funciona con campos numéricos y
TIMESTAMPTZ. Para obtener más información sobre los tipos de datos, consulte Boolean & Number y TIMESTAMPTZ Field.Parámetros: No se necesitan parámetros de índice.
No admite Mmap: El modo de mapa de memoria no está disponible para
STL_SORT.