Milvus
Zilliz
Casa
  • Guida per l'utente
    • Indici
  • Home
  • Docs
  • Guida per l'utente

  • Indici

  • Indici scalari

  • STL_SORT

STL_SORT

L'indice STL_SORT è un tipo di indice progettato specificamente per migliorare le prestazioni delle query sui campi numerici (INT8, INT16, ecc.), sui campi VARCHAR o sui campi TIMESTAMPTZ all'interno di Milvus, organizzando i dati in un ordine ordinato.

Utilizzare l'indice STL_SORT se si eseguono frequentemente query con:

  • Filtro di confronto con gli operatori ==, !=, >, <, >= e <=

  • Filtraggio dell'intervallo con gli operatori IN e LIKE

Tipi di dati supportati

Come funziona

Milvus implementa STL_SORT in due fasi:

  1. Creazione dell'indice

    • Durante l'ingestione, Milvus raccoglie tutti i valori del campo indicizzato.

    • I valori vengono ordinati in ordine crescente utilizzando std::sort dell'STL C++.

    • Ogni valore viene abbinato all'ID dell'entità e l'array ordinato viene conservato come indice.

  2. Accelerare le query

    • Al momento dell'interrogazione, Milvus utilizza la ricerca binaria(std::lower_bound e std::upper_bound) sull'array ordinato.

    • Per l'uguaglianza, Milvus trova rapidamente tutti i valori corrispondenti.

    • Per gli intervalli, Milvus individua le posizioni iniziali e finali e restituisce tutti i valori intermedi.

    • Gli ID delle entità corrispondenti vengono passati all'esecutore della query per l'assemblaggio del risultato finale.

Questo riduce la complessità della query da O(n) (scansione completa) a O(log n + m), dove m è il numero di corrispondenze.

Creare un indice STL_SORT

È possibile creare un indice STL_SORT su un campo numerico o TIMESTAMPTZ. Non sono richiesti parametri aggiuntivi.

L'esempio seguente mostra come creare un indice STL_SORT su 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
)

Eliminare un indice

Usare il metodo drop_index() per rimuovere un indice esistente da un insieme.

client.drop_index(
    collection_name="tsz_demo",   # Name of the collection
    index_name="tsz_index" # Name of the index to drop
)

Note d'uso

  • Tipi di campo: Funziona con i campi numerici e TIMESTAMPTZ. Per ulteriori informazioni sui tipi di dati, consultare Boolean & Number e TIMESTAMPTZ Field.

  • Parametri: Non sono necessari parametri di indice.

  • Mmap non supportata: La modalità memory-mapped non è disponibile per STL_SORT.

Try Managed Milvus for Free

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

Get Started
Feedback

Questa pagina è stata utile?