الاستعلام المشروط
يقدم هذا الموضوع كيفية القيام بالاستعلامات المشروطة.
على عكس عمليات البحث عن الشبه بين القواعد النصية، تقوم الاستعلامات المشروطة بإسترجاع القواعد باستخدام مرشحات قيم السكالار من خلال التعبيرات المنطقية. يدعم Milvus الاستعلام على الحقول السكالار ومختلف التعبيرات المنطقية. يمكن استخدام التعبيرات المنطقية لتصفية الحقول السكالار أو حقول المفتاح الرئيسي لاسترجاع جميع النتائج التي تطابق شروط التصفية.
يظهر المثال التالي كيفية الاستعلام عن مجموعة بيانات تتألف من 2000 صف من الكتب، بما في ذلك معرف الكتاب (المفتاح الرئيسي)، عدد الكلمات (الحقل السكالار)، ومقدمة الكتاب (الحقل النصي)، وذلك بمحاكاة سيناريو الاستعلام عن كتاب محدد استنادًا إلى معرفه.
تحميل المجموعة
قبل إجراء الاستعلام، يجب تحميل المجموعة في الذاكرة.
from pymilvus import Collection
collection = Collection("book") # الحصول على مجموعة موجودة.
collection.load()
القيام بالاستعلام
يقوم المثال التالي بتصفية القواعد باستخدام القيم المحددة book_id
ويُعيد حقل book_id
وحقل book_intro
في النتائج.
تدعم Milvus ضبط مستويات التناسق للإستعلامات. يقوم المثال في هذا الموضوع بتعيين مستوى التناسق على قوي
. يمكنك أيضًا تعيين مستوى التناسق إلى محصور
، جلسة
، أو نهائيًا
. لمزيد من المعلومات حول أربعة مستويات التناسق في Milvus، يرجى الرجوع إلى التناسق.
يمكنك أيضًا استخدام الحقول الديناميكية في تعبير التصفية وتحديد حقول الإخراج في طلب الاستعلام. على سبيل المثال، راجع البيانات الديناميكية.
res = collection.query(
expr = "book_id in [2,4,6,8]",
offset = 0,
limit = 10,
output_fields = ["book_id", "book_intro"],
)
المعلمة | الوصف |
---|---|
expr |
التعبير المنطقي المستخدم لتصفية الخصائص. لمزيد من التفاصيل حول قواعد التعبير المنطقي، يرجى الرجوع إلى قواعد التعبير المنطقي. |
limit |
عدد النتائج الأكثر تشابهًا للإرجاع. يجب أن يكون مجموع هذه القيمة وoffset أقل من 16384. |
offset |
عدد النتائج التي يجب تخطيها في المجموعة. متاح فقط عند تحديد limit ، ويجب أن يكون مجموع هذه القيمة وlimit أقل من 16384. على سبيل المثال، إذا كنت ترغب في الاستعلام عن الجيران الأقرب التاسع والعاشر لناقلة معينة، فقم بتعيين limit إلى 2 ، وoffset إلى 8 . |
output_fields (اختياري) |
قائمة بأسماء الحقول للإرجاع. |
partition_names (اختياري) |
قائمة بأسماء الأقسام للاستعلام. |
consistency_level (اختياري) |
مستوى التناسق للإستعلام. |
تحقق من النتائج المعادة.
sorted_res = sorted(res, key=lambda k: k['book_id'])
sorted_res
عد الكيانات
عند القيام بالاستعلام، يمكنك إضافة count(*)
في output_fields
بحيث يمكن لـ Milvus إعادة عدد الكيانات في المجموعة. إذا كنت ترغب في عدد الكيانات التي تستوفي شروط محددة، استخدم expr
لتعريف تعبير منطقي.
احسب جميع الكيانات في المجموعة:
res = collection.query(
expr="",
output_fields = ["count(*)"],
)
print(res)
print(res[0])
احسب عدد الكيانات التي تفي بشروط التصفية المحددة:
res = collection.query(
expr="book_id in [2,4,6,8]",
output_fields = ["count(*)"],
)
print(res)
print(res[0])
القيود
عند استخدام count(*)
في output_fields
، يُحظر استخدام معلمة limit
.