مشغلات المصفوفات الهيكليةCompatible with Milvus 3.0.x

تخزن مصفوفة الهياكل، أو StructArray، في كيان ما مجموعة مرتبة من عناصر الهياكل. تشترك كل بنية في المصفوفة في نفس المخطط المحدد مسبقًا، والذي يتألف من حقول فرعية متعددة المتجهات والحقول القياسية. عندما يتم فهرسة حقل فرعي قياسي في Struct، يمكنك استخدام عوامل تصفية العناصر والعوامل في عائلة المطابقة لإجراء تصفية قياسية عليه.

يقوم عامل تصفية العناصر بتحديد الكيانات التي تحتوي على قيمة واحدة على الأقل في حقل StructArray مطابقة للمسند المحدد. في المقابل، يتم استخدام عوامل تشغيل عائلة المطابقة للعثور على الكيانات التي تحتوي على أعداد أو نسب محددة من القيم في حقل StructArray المطابق للمسند المحدد.

عند إنشاء مسندات مقابل $[subField] ، تأكد من فهرسة الحقل الفرعي إذا كنت تعمل مع مجموعات بيانات واسعة النطاق، حيث يتطلب هذان العاملان تكرارًا عبر عناصر المصفوفة لكل كيان مرشح.

مرشحات العناصر

استخدم مرشحات العناصر عندما تحتاج إلى التحقق مما إذا كان الكيان يحتوي على القيم التي تطابق مسندًا معينًا في حقل StructArray الخاص به.

element_filter(chunks, $[text] LIKE "Red%")

كما هو موضح في تعبير عامل تصفية العناصر أعلاه، يُرجع عامل تصفية العناصر الكيانات التي تحتوي على قطعة واحدة على الأقل تبدأ بـ "أحمر" في الحقل الفرعي text. المعلمة الأولى هي اسم الحقل StructArray، بينما المعلمة الثانية هي المسند الذي ينطبق على الحقل الفرعي Struct.

يمكنك استخدام عوامل المقارنة، والنطاق، والعوامل الحسابية لبناء الشرط، والعوامل المنطقية لربط شروط متعددة، كما هو موضح في العوامل الأساسية.

ومع ذلك، عندما تقوم ببناء تعبير مرشح يجمع بين مسند على مستوى الكيان وعامل تصفية عنصر، يجب عليك دائمًا وضع عامل تصفية العنصر في النهاية، كما هو موضح في المثال التالي.

# correct
id > 0 && element_filter(chunks, $[x] > 1)

# incorrect, resulting errors
element_filter(chunks, $[x] > 1) && id > 0

عوامل عائلة التطابق

يعمل عاملا عائلة المطابقة على حقل StructArray أيضًا. بدلًا من التحقق ببساطة من وجود عنصر ما، يمكنك تحديد عدد العناصر (أو النسبة) التي يجب أن تستوفي مسند العنصر.

  • MATCH_ANY(identifier, predicate): تُرجع الكيانات التي تحتوي على جزء واحد على الأقل يبدأ بـ "أحمر" في الحقل الفرعي text ؛ من الناحية الدلالية، هذا يعادل element_filter.

  • MATCH_ALL(identifier, predicate): تُرجع الكيانات التي تبدأ حقولها الفرعية النصية في جميع القطع ب "أحمر".

  • MATCH_LEAST(identifier, predicate, k): تُرجع الكيانات التي تحتوي على الأقل على k قطع تبدأ ب "أحمر" في الحقل الفرعي text.

  • MATCH_MOST(identifier, predicate, k): تُرجع الكيانات التي تحتوي على k على الأكثر على أجزاء تبدأ ب "أحمر" في الحقل الفرعي text.

  • MATCH_EXACT(identifier, predicate, k):: إرجاع الكيانات التي تحتوي على k قطع تبدأ ب "أحمر" في الحقل الفرعي text.

MATCH_ANY

يُقيّم هذا المشغل على أنه صواب إذا كان عنصر واحد على الأقل في المصفوفة يستوفي المسند، مما يشير إلى أن المكافئ الهيكلي للمنطق OR عبر جميع عناصر المصفوفة.

مشغّلا MATCH_ANY ومرشحات العناصر متماثلان من الناحية الدلالية، ويمكنك استخدامهما بالتبادل. عندما تحتاج إلى التعبير عن المنطق count(matches) >= 1 ، يجب عليك استخدامهما.

مثال:

يقوم المثال التالي بإرجاع الكيانات التي يبدأ أي جزء من المستند فيها بحرف "أحمر".

MATCH_ANY(chunks, $[text] LIKE 'Red%')

MATCH_ALL

لا يتم تقييم هذا العامل على أنه صواب إلا إذا كان كل عنصر في المصفوفة يستوفي المسند.

عندما تحتاج إلى التعبير عن المنطق count(matches) == total elements ، استخدم هذا المشغّل.

مثال:

MATCH_ALL(chunks, $[text] LIKE 'Red%')

MATCH_LEAST

هذا المشغل هو عامل تصفية كمي يقوم بإرجاع صواب إذا كان عدد العناصر التي تستوفي المسند أكبر من أو يساوي ثابتًا محددًا kk k.

عندما تحتاج إلى التعبير عن المنطق count(matches) >= k ، استخدم هذا العامل.

مثال:

MATCH_LEAST(chunks, $[text] LIKE 'Red%', 3)

MATCH_MOST

هذا المشغل هو عامل تصفية كمي يقوم بإرجاع صواب إذا كان عدد العناصر التي تستوفي المسند أقل من أو يساوي ثابتًا محددًا kk k.

هذا مفيد بشكل خاص لتصفية الكيانات التي تفرط في استهداف كلمة أساسية معينة (تقليل الضوضاء).

مثال:

MATCH_MOST(chunks, $[text] LIKE 'Red%', 3)

MATCH_EXACT

هذا المشغل هو المشغل الكمي الأكثر تقييدًا في العائلة. يُرجع صحيحًا إذا وفقط إذا كان عدد العناصر التي تستوفي المسند هو بالضبط kk k.

مثال:

MATCH_EXACT(chunks, $[text] LIKE 'Red%', 3)

جرب Managed Milvus مجاناً

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

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

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