STL_SORT
O índice STL_SORT é um tipo de índice especificamente concebido para melhorar o desempenho das consultas em campos numéricos (INT8, INT16, etc.), campos VARCHAR ou campos TIMESTAMPTZ no Milvus, organizando os dados numa ordem ordenada.
Utilize o índice STL_SORT se executar frequentemente consultas com:
Filtragem de comparação com os operadores
==,!=,>,<,>=, e<=Filtragem de intervalos com os operadores
INeLIKE
Tipos de dados suportados
Campos numéricos (por exemplo,
INT8,INT16,INT32,INT64,FLOAT,DOUBLE). Para mais pormenores, consulte Boolean & Number.VARCHARCampos de cadeia de caracteres. Para mais pormenores, consulte String Field.TIMESTAMPTZfields. Para mais pormenores, consulte Campo TIMESTAMPTZ.
Como funciona
Milvus implementa STL_SORT em duas fases:
Construir índice
Durante a ingestão, o Milvus recolhe todos os valores para o campo indexado.
Os valores são ordenados por ordem ascendente utilizando a função std::sort da STL do C++.
Cada valor é emparelhado com o seu ID de entidade e a matriz ordenada é mantida como o índice.
Acelerar as consultas
No momento da consulta, o Milvus usa pesquisa binária(std::lower_bound e std::upper_bound) no array ordenado.
Para igualdade, Milvus encontra rapidamente todos os valores correspondentes.
Para intervalos, Milvus localiza as posições inicial e final e retorna todos os valores entre elas.
Os IDs de entidades correspondentes são passados para o executor da consulta para a montagem do resultado final.
Isso reduz a complexidade da consulta de O(n) (varredura completa) para O(log n + m), onde m é o número de correspondências.
Criar um índice STL_SORT
Pode criar um índice STL_SORT num campo numérico ou TIMESTAMPTZ. Não são necessários parâmetros adicionais.
O exemplo abaixo mostra como criar um índice STL_SORT num 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 um índice
Utilize o método drop_index() para remover um índice existente de uma coleção.
client.drop_index(
collection_name="tsz_demo", # Name of the collection
index_name="tsz_index" # Name of the index to drop
)
Notas de utilização
Tipos de campo: Funciona com campos numéricos e
TIMESTAMPTZ. Para obter mais informações sobre tipos de dados, consulte Boolean & Number e TIMESTAMPTZ Field.Parâmetros: Não são necessários parâmetros de índice.
Mmap não suportado: O modo de memória mapeada não está disponível para
STL_SORT.