Milvus
Zilliz
Home
  • Guia do utilizador
    • Índices
  • Home
  • Docs
  • Guia do utilizador

  • Índices

  • Índices escalares

  • STL_SORT

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 IN e LIKE

Tipos de dados suportados

  • Campos numéricos (por exemplo, INT8, INT16, INT32, INT64, FLOAT, DOUBLE). Para mais pormenores, consulte Boolean & Number.

  • VARCHAR Campos de cadeia de caracteres. Para mais pormenores, consulte String Field.

  • TIMESTAMPTZ fields. Para mais pormenores, consulte Campo TIMESTAMPTZ.

Como funciona

Milvus implementa STL_SORT em duas fases:

  1. 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.

  2. 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.

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started
Feedback

Esta página foi útil?