STL_SORT
فهرس STL_SORT هو نوع فهرس مصمم خصيصًا لتحسين أداء الاستعلام على الحقول الرقمية (INT8، INT16، إلخ) أو حقول VARCHAR أو حقول TIMESTAMPTZ داخل Milvus من خلال تنظيم البيانات بترتيب مرتب.
استخدم الفهرس STL_SORT إذا كنت تقوم بتشغيل الاستعلامات بشكل متكرر مع:
تصفية المقارنة باستخدام
==و!=و و>و<و>=و<=تصفية النطاق باستخدام المشغلين
INوLIKE
أنواع البيانات المدعومة
حقول رقمية (على سبيل المثال،
INT8،INT16، ،INT32،INT64،FLOAT،DOUBLE). لمزيد من التفاصيل، راجع الحقول المنطقية والعددية.VARCHARالحقول. لمزيد من التفاصيل، راجع حقول السلسلة.TIMESTAMPTZالحقول. لمزيد من التفاصيل، راجع حقل TIMESTAMPTZ.
كيف يعمل
ينفذ ميلفوس STL_SORT على مرحلتين:
بناء الفهرس
أثناء الاستيعاب، يجمع Milvus جميع القيم للحقل المفهرس.
يتم فرز القيم بترتيب تصاعدي باستخدام std:::sort الخاص بـ C++ STL.
يتم إقران كل قيمة بمعرف الكيان الخاص بها، ويتم استمرار المصفوفة المصنفة كفهرس.
تسريع الاستعلامات
في وقت الاستعلام، يستخدم Milvus بحثًا ثنائيًا(std::Lower_bound و std::upper_bound) على المصفوفة المصنفة.
بالنسبة للتساوي، يعثر ميلفوس بسرعة على جميع القيم المطابقة.
بالنسبة للنطاقات، يحدد 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.