القيام بالاستعلامات الشرطية
يقدم هذا الموضوع كيفية القيام بالاستعلامات الشرطية، مشابهة لشروط WHERE في SQL.
على عكس البحث عن تشابه النظام الخاص بالناقل الناقص، يسترجع الاستعلامات الناقصة النواقف بناءً على تصفية الرقم النقدي باستخدام تعبيرات منطقية. يدعم Milvus مجموعة متنوعة من أنواع البيانات في الحقول النقدية ومجموعة متنوعة من التعبيرات المنطقية. يمكن للتعبيرات المنطقية تصفية الحقول النقدية أو حقول المفتاح الرئيسي واسترجاع كل النتائج التي تتوافق مع شروط التصفية.
يوضح المثال التالي كيفية تنفيذ استعلام على مجموعة بيانات تحتوي على 2000 صف، تتضمن معرف الكتاب (المفتاح الرئيسي)، عدد الكلمات (حقل نقدي)، ومقدمة الكتاب (حقل ناقص). يحاكي الاستعلام عن كتب محددة استنادًا إلى معرفاتها.
تحميل المجموعة
في Milvus، تتم جميع عمليات البحث والاستعلامات في الذاكرة. قبل تنفيذ استعلام، يحتاج التجميع إلى التحميل في الذاكرة.
err := milvusClient.LoadCollection(
context.Background(), // ctx
"book", // CollectionName
false // async
)
if err != nil {
log.Fatal("فشل تحميل المجموعة:", err.Error())
}
تنفيذ الاستعلام
يقوم المثال التالي بتصفية النواقف بناءً على قيم معينة لـ book_id
ويُرجع حقول book_id
و book_intro
للنتائج.
يدعم Milvus ضبط مستويات الاتساق للاستعلامات. يضبط هذا المثال مستوى الاتساق على قوي
. يمكنك أيضًا ضبط مستوى الاتساق على محصور
, جلسة
, أو بالتدريج
. لمزيد من المعلومات حول أربعة مستويات اتساق في Milvus، راجع الاتساق.
يمكنك أيضًا استخدام الحقول الديناميكية في تعبيرات التصفية وحقول الإخراج في طلب الاستعلام. على سبيل المثال، انظر إلى النمط الديناميكي.
opt := client.SearchQueryOptionFunc(func(option *client.SearchQueryOption) {
option.Limit = 3
option.Offset = 0
option.ConsistencyLevel = entity.ClStrong
option.IgnoreGrowing = false
})
queryResult, err := milvusClient.Query(
context.Background(), // ctx
"book", // CollectionName
"", // PartitionName
entity.NewColumnInt64("book_id", []int64{2,4,6,8}), // expr
[]string{"book_id", "book_intro"}, // OutputFields
opt, // queryOptions
)
if err != nil {
log.Fatal("فشل الاستعلام عن المجموعة:", err.Error())
}
المعلمات | الوصف | الخيارات |
---|---|---|
ctx |
السياق المستخدم للتحكم في عملية الاستدعاء البرمجي. | غ/م |
CollectionName |
اسم المجموعة التي سيتم الاستعلام عنها. | غ/م |
partitionName |
أسماء الأقسام التي يتعين تحميلها. إذا كانت فارغة، يتم استعلام جميع الأقسام. | غ/م |
expr |
التعبير المنطقي المستخدم لتصفية السمات. | لمزيد من المعلومات، انظر قواعد التعبير المنطقي. |
OutputFields |
أسماء الحقول التي يتعين إرجاعها. | لا تدعم الحقول الناقصة في الإصدار الحالي. |
opts |
خيارات الاستعلام التي تمثل عبر الشكل entity.SearchQueryOptionFunc . |
- الحد يشير إلى عدد الكيانات المراد إرجاعها. - الإزاحة تدل على عدد الكيانات المراد تخطيها أثناء عملية البحث. يجب أن يكون مجموع هذا المعامل والحد أقل من 16384 . - مستوى الاتساق يشير إلى مستوى الاتساق الذي سيتم تطبيقه أثناء عملية البحث. - تجاهل النمو يشير ما إذا كان سيتم تجاهل القسم المنمو، خلال عملية البحث عن التشابه. القيمة الافتراضية هي False ، مما يشير إلى أن البحث ينطوي على القسم المنمو. |
تحقق من النتيجة المُرجعة.
fmt.Printf("%#v\n", queryResult)
for _, qr := range queryResult {
fmt.Println(qr.IDs)
}
حساب كمية الكيانات
عند تنفيذ استعلام، يمكنك إلحاق count(*)
بـ output_fields
، بحيث يمكن لـ Milvus إرجاع كمية الكيانات في المجموعة. إذا كنت ترغب في عد كمية الكيانات التي تلبي شروطًا محددة، استخدم expr
لتعريف تعبير منطقي.
القيود
عند استخدام count(*)
في output_fields
، لا يُسمح باستخدام معامل limit
.