STL_SORT
Indeks STL_SORT adalah jenis indeks yang dirancang khusus untuk meningkatkan performa kueri pada field numerik (INT8, INT16, dsb.), field VARCHAR, atau field TIMESTAMPTZ di dalam Milvus dengan mengorganisasikan data dalam urutan yang diurutkan.
Gunakan indeks STL_SORT jika Anda sering menjalankan kueri dengan:
Pemfilteran perbandingan dengan operator
==,!=,>,<,>=, dan<=Pemfilteran rentang dengan operator
INdanLIKE
Tipe data yang didukung
Bidang numerik (misalnya,
INT8,INT16,INT32,INT64,FLOAT,DOUBLE). Untuk detailnya, lihat Boolean & Angka.VARCHARbidang. Untuk detailnya, lihat Bidang String.TIMESTAMPTZbidang. Untuk detailnya, lihat Bidang Waktu.
Bagaimana cara kerjanya
Milvus mengimplementasikan STL_SORT dalam dua fase:
Membangun indeks
Selama proses ingestion, Milvus mengumpulkan semua nilai untuk bidang yang diindeks.
Nilai-nilai tersebut diurutkan dalam urutan menaik menggunakan std::sort C++ STL.
Setiap nilai dipasangkan dengan ID entitasnya, dan larik yang telah diurutkan disimpan sebagai indeks.
Mempercepat kueri
Pada saat query, Milvus menggunakan pencarian biner(std::lower_bound dan std::upper_bound) pada larik terurut.
Untuk persamaan, Milvus dengan cepat menemukan semua nilai yang cocok.
Untuk rentang, Milvus menemukan posisi awal dan akhir dan mengembalikan semua nilai di antaranya.
ID entitas yang cocok diteruskan ke eksekutor kueri untuk perakitan hasil akhir.
Hal ini mengurangi kompleksitas kueri dari O(n) (pemindaian penuh) menjadi O(log n + m), di mana m adalah jumlah kecocokan.
Membuat indeks STL_SORT
Anda dapat membuat indeks STL_SORT pada bidang numerik atau TIMESTAMPTZ. Tidak ada parameter tambahan yang diperlukan.
Contoh di bawah ini menunjukkan cara membuat indeks STL_SORT pada ruas 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
)
Menghapus indeks
Gunakan metode drop_index() untuk menghapus indeks yang sudah ada dari koleksi.
client.drop_index(
collection_name="tsz_demo", # Name of the collection
index_name="tsz_index" # Name of the index to drop
)
Catatan penggunaan
Jenis bidang: Bekerja dengan bidang numerik dan
TIMESTAMPTZ. Untuk informasi lebih lanjut mengenai tipe data, lihat Bidang Boolean & Angka dan TIMESTAMPTZ.Parameter: Tidak diperlukan parameter indeks.
Mmap tidak didukung: Mode pemetaan memori tidak tersedia untuk
STL_SORT.