مشغلات StructArray

تقوم مشغلات StructArray بتصفية الكيانات من خلال تقييم المسندات على الحقول الفرعية القياسية داخل حقل StructArray. استخدم هذه الصفحة كمرجع لصيغة المشغل " element_filter " ومجموعة مشغلات " MATCH_* ".

يحتوي تصفية StructArray على مجموعتين من العوامل:

مجموعة العواملالغرض الرئيسيسلوك النتيجة
element_filterمطابقة عناصر Struct التي تستوفي شرطًا قياسيًا.في البحث على مستوى العناصر، يمكن أن تتضمن النتائج المطابقة إزاحات العناصر. في الاستعلام على مستوى الصفوف أو البحث المُصفى، يعتمد شكل النتيجة على واجهة برمجة التطبيقات (API) وحقول الإخراج.
MATCH_*تحديد الكيانات حسب عدد عناصر Struct التي تستوفي شرطًا قياسيًا.التصفية على مستوى الصفوف. لا تُرجع هذه العوامل إزاحات العناصر من تلقاء نفسها.

استخدم الحقول الفرعية القياسية في عوامل StructArray. تُستخدم الحقول الفرعية المتجهة في مسارات البحث المتجهة ولا تُعد مدخلات لشروط قياسية.

متى تستخدم أي عامل

الهدفالاستخدام
تقييد البحث المتجهي على مستوى العناصر ليقتصر على العناصر التي تتطابق مع الشروط القياسية.element_filter
مطابقة شروط سكالارية متعددة داخل نفس عنصر Struct.element_filter
إرجاع الكيانات التي يفي فيها عنصر Struct واحد على الأقل بشرط ما فقط.MATCH_ANY
إرجاع الكيانات التي تستوفي جميع عناصر Struct فيها الشرط فقط.MATCH_ALL
إرجاع الكيانات التي يستوفي فيها ما لا يقل عن أو ما لا يزيد عن أو بالضبط N من عناصر Struct شرطًا ما.MATCH_LEAST، أو MATCH_MOST ، أو MATCH_EXACT

مرشح العناصر

استخدم element_filter(structArrayField, predicate) لمطابقة عناصر Struct في حقل StructArray.

داخل الشرط، استخدم $[subfield] للإشارة إلى حقل فرعي قياسي لعنصر Struct الحالي.

element_filter(chunks, $[section] == "index")

عند استخدام شروط متعددة داخل الشرط، تنطبق جميع إشارات $[subfield] على نفس عنصر Struct:

element_filter(chunks, $[section] == "index" && $[quality_score] > 0.9)

عند دمج شرط على مستوى الكيان مع element_filter ، ضع element_filter في نهاية التعبير:

# Correct
category == "index" && element_filter(chunks, $[quality_score] > 0.9)

# Incorrect
element_filter(chunks, $[quality_score] > 0.9) && category == "index"

element_filter لا يمكن أن يظهر إلا مرة واحدة في تعبير التصفية. لا تقم بتداخل element_filter أو MATCH_* داخل element_filter آخر.

مشغلات عائلة المطابقة

استخدم عوامل التشغيل MATCH_* عندما يتعين تحديد كيان بناءً على عدد عناصر Struct التي تستوفي شرطًا ما.

المُشغِّلالمعنى
MATCH_ANY(field, predicate)يستوفي عنصر Struct واحد على الأقل الشرط.
MATCH_ALL(field, predicate)تستوفي جميع عناصر Struct الشرط.
MATCH_LEAST(field, predicate, threshold=N)يستوفي ما لا يقل عن N عنصر من عناصر Struct الشرط.
MATCH_MOST(field, predicate, threshold=N)يستوفي ما لا يزيد عن N عن عناصر Struct الشرط.
MATCH_EXACT(field, predicate, threshold=N)يستوفي N عنصرًا من عناصر Struct بالضبط الشرط.

MATCH_ANY ويمكن لكل من element_filter التعبير عن أن عنصر Struct واحد على الأقل يستوفي الشرط. استخدم MATCH_ANY عندما تحتاج فقط إلى التصفية على مستوى الصف. استخدم element_filter عندما تحتاج إلى قيود على مستوى العنصر، مثل تصفية عناصر Struct التي تشارك في البحث المتجهي على مستوى العنصر.

MATCH_ANY

MATCH_ANY يُقيَّم إلى true إذا كان عنصر واحد على الأقل في StructArray يستوفي الشرط.

MATCH_ANY(chunks, $[section] == "index")

بالنسبة لـ StructArray فارغ، يُرجع MATCH_ANY القيمة false.

MATCH_ALL

MATCH_ALL يُقيَّم إلى true إذا كان كل عنصر في StructArray يستوفي الشرط.

MATCH_ALL(chunks, $[has_code] == true)

بالنسبة إلى StructArray فارغ، تُرجع الدالة MATCH_ALL القيمة true.

تُقيّم MATCH_LEAST

MATCH_LEAST يُقيَّم إلى true إذا كان عدد العناصر التي تستوفي الشرط أكبر من أو يساوي threshold.

MATCH_LEAST(chunks, $[quality_score] > 0.9, threshold=2)

بالنسبة لـ MATCH_LEAST ، يجب أن يكون threshold عددًا صحيحًا موجبًا.

MATCH_MOST

MATCH_MOST تُحسب قيمتها بـ true إذا كان عدد العناصر التي تستوفي الشرط أقل من أو يساوي threshold.

MATCH_MOST(chunks, $[has_code] == true, threshold=1)

بالنسبة لـ MATCH_MOST ، يمكن أن يكون threshold صفرًا أو عددًا صحيحًا موجبًا.

MATCH_EXACT

MATCH_EXACT تُقيَّم إلى true إذا كان عدد العناصر التي تستوفي الشرط يساوي بالضبط threshold.

MATCH_EXACT(chunks, $[section] == "filter", threshold=1)

بالنسبة لـ MATCH_EXACT ، يمكن أن يكون threshold صفرًا أو عددًا صحيحًا موجبًا.

الشرطيات المدعومة

تمثل صيغة $[...] القيمة القياسية لعنصر Struct الحالي. يعتمد دعم الشرط على نوع الحقل الفرعي القياسي.

نوع الحقل الفرعيدعم المسندات على مستوى العنصر
BOOLالمسلمات القياسية مثل $[has_code] == true أو !($[has_code] == true). تجنب التعبيرات المنطقية المجردة مثل $[has_code].
INT8، INT16 ، INT32 ، INT64المقارنة، النطاق المتسلسل، in ، not in ، التعبيرات الحسابية التي تحتوي على + ، - ، * ، / ، أو % متبوعة بمقارنة، والتركيبات المنطقية.
FLOAT، DOUBLEالمقارنة، النطاق المتسلسل، in ، not in ، التعبيرات الحسابية التي تحتوي على + ، - ، * ، أو / متبوعة بمقارنة، والتركيبات المنطقية. لا يُدعم عامل التشغيل % للحقول الفرعية ذات العلامة العائمة.
VARCHARمقارنة السلاسل، والنطاق المتسلسل، و in ، و not in ، و like ، و =~ ، و !~ ، والتركيبات المنطقية.
الحقول الفرعية للمتجهاتغير مدعومة كمدخلات للمسندات القياسية $[...]. استخدم الحقول الفرعية للمتجهات بدلاً من ذلك من خلال البحث في EmbeddingList أو البحث المتجهي على مستوى العنصر.

تنطبق العوامل المنطقية مثل && و \|\| و ! على تعبيرات المسندات. على سبيل المثال، اكتب !($[has_code] == true) بدلاً من !$[has_code].

المسندات غير المدعومة

لا تدعم المسندات على مستوى العناصر $[...] ما يلي:

  • وظائف مطابقة النص، مثل text_match(field, "...") أو phrase_match(field, "...").

  • صيغة مسار JSON، و exists على مسارات JSON، أو دوال JSON مثل json_contains أو json_contains_all أو json_contains_any.

  • دوال حاويات المصفوفات مثل array_contains أو array_contains_all أو array_contains_any أو array_length.

  • $[subfield] is null أو $[subfield] is not null.

  • وظائف الهندسة / نظم المعلومات الجغرافية (GIS).

  • تعبيرات الطابع الزمني tz.

  • random_sample(...).

  • المسندات المتجهة على مستوى الحقل.

  • استدعاءات وظائف التصفية العامة ما لم تدعم توقيعات الوظائف المحددة ومسارات التنفيذ صراحةً المسندات على مستوى عناصر StructArray.

قواعد بناء الجمل

  • MATCH_* أسماء العوامل لا تميز بين الأحرف الكبيرة والصغيرة.

  • استخدم $[subfield] فقط داخل المسندات element_filter أو MATCH_*.

  • لا تستخدم $[subfield] كمسار JSON أو حاوية صفيف أو مرجع لحقل متجه.

  • لا تقم بتداخل element_filter أو MATCH_* داخل عامل StructArray آخر.

  • استخدم threshold=N المسمى لـ MATCH_LEAST و MATCH_MOST و MATCH_EXACT.

  • MATCH_ANY عند استدعاءه على StructArray فارغ، يُرجع false.

  • MATCH_ALL عند استدعاءه على StructArray فارغ، يُرجع true.

انظر أيضًا

ترجمة بواسطةDeepL

جرب Managed Milvus مجاناً

Zilliz Cloud خالي من المتاعب، ويعمل بواسطة Milvus ويعمل بسرعة 10 أضعاف.

ابدأ
التعليقات

هل كانت هذه الصفحة مفيدة؟