STL_SORT
Индекс STL_SORT - это тип индекса, специально разработанный для повышения производительности запросов к числовым полям (INT8, INT16 и т. д.), полям VARCHAR или TIMESTAMPTZ в Milvus путем организации данных в отсортированном порядке.
Используйте индекс STL_SORT, если вы часто выполняете запросы с:
Сравнительная фильтрация с помощью операторов
==,!=,>,<,>=и<=.Фильтрация диапазонов с помощью операторов
INиLIKE.
Поддерживаемые типы данных
Числовые поля (например,
INT8,INT16,INT32,INT64,FLOAT,DOUBLE). Подробнее см. в разделе Булевые и числовые.VARCHARполя. Подробнее см. в разделе Строковое поле.TIMESTAMPTZПоля. Дополнительные сведения см. в разделе Поле TIMESTAMPTZ.
Как это работает
Milvus реализует STL_SORT в два этапа:
Построение индекса
Во время индексации Milvus собирает все значения для индексируемого поля.
Значения сортируются в порядке возрастания с помощью std::sort из C++ STL.
Каждое значение сопоставляется с идентификатором сущности, и отсортированный массив сохраняется в качестве индекса.
Ускорение запросов
Во время запроса Milvus использует бинарный поиск(std::lower_bound и std::upper_bound) в отсортированном массиве.
Для равенства Milvus быстро находит все совпадающие значения.
Для диапазонов Milvus находит начальную и конечную позиции и возвращает все значения между ними.
Идентификаторы совпадающих сущностей передаются исполнителю запроса для окончательной сборки результатов.
Это снижает сложность запроса с O(n) (полное сканирование) до O(log n + m), где m - количество совпадений.
Создание индекса STL_SORT
Вы можете создать индекс STL_SORT на числовом поле или поле TIMESTAMPTZ. Никаких дополнительных параметров не требуется.
В примере ниже показано, как создать индекс STL_SORT на поле 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
)
Удаление индекса
Используйте метод drop_index() для удаления существующего индекса из коллекции.
client.drop_index(
collection_name="tsz_demo", # Name of the collection
index_name="tsz_index" # Name of the index to drop
)
Указания по использованию
Типы полей: Работает с числовыми полями и полями
TIMESTAMPTZ. Дополнительные сведения о типах данных см. в разделах Булево и число и Поле TIMESTAMPTZ.Параметры: Параметры индекса не требуются.
Mmap не поддерживается: Режим отображения в памяти недоступен для
STL_SORT.