مشغلات المصفوفات
يوفر Milvus مشغلات ARRAY لتصفية حقول ARRAY وتحديث قيم حقول ARRAY جزئيًا.
يجب أن تكون جميع العناصر داخل المصفوفة من نفس النوع، ويتم التعامل مع الهياكل المتداخلة داخل المصفوفات على أنها سلاسل نصية عادية. لذلك، عند العمل مع حقول المصفوفات، يُنصح بتجنب التداخل المفرط والتأكد من أن هياكل البيانات الخاصة بك مسطحة قدر الإمكان لتحقيق الأداء الأمثل.
تغطي مشغلات المصفوفات في Milvus سيناريوهين للاستخدام:
تعبيرات التصفية للاستعلام والبحث.
التحديثات الجزئية في طلبات «
upsert».
مشغلات ARRAY المتاحة
يسرد الجدول التالي عوامل ARRAY المتاحة في Milvus.
| المُشغِّل | الاستخدام في | الوصف |
|---|---|---|
| ARRAY_CONTAINS(المعرف، التعبير) | تعبير التصفية | يتحقق من وجود عنصر معين في حقل ARRAY. |
| ARRAY_CONTAINS_ALL(المعرف، التعبير) | تعبير التصفية | يتحقق مما إذا كانت جميع العناصر الموجودة في قائمة محددة موجودة في حقل ARRAY. |
| ARRAY_CONTAINS_ANY(المعرف، التعبير) | تعبير التصفية | يتحقق مما إذا كان أي عنصر في قائمة محددة موجودًا في حقل ARRAY. |
| ARRAY_LENGTH(المعرف) | تعبير التصفية | تُرجع عدد العناصر الموجودة في حقل ARRAY ويمكن دمجها مع عوامل المقارنة لأغراض التصفية. |
| ARRAY_APPEND | upsert مع field_ops | يُضيف عناصر الحمولة إلى حقل ARRAY موجود. متوفر في Milvus الإصدار 2.6.17 والإصدارات الأحدث. |
| ARRAY_REMOVE | upsert مع field_ops | يزيل كل عنصر من حقل ARRAY موجود يتطابق مع قيمة في حمولة الطلب. متوفر في Milvus الإصدار 2.6.17 والإصدارات الأحدث. |
ARRAY_CONTAINS
يقوم عامل التشغيل « ARRAY_CONTAINS » بالتحقق من وجود عنصر معين في حقل صفيف. وهو مفيد عندما تريد العثور على الكيانات التي يحتوي صفيفها على عنصر معين.
مثال
لنفترض أن لديك حقل صفيف history_temperatures ، الذي يحتوي على أدنى درجات الحرارة المسجلة لسنوات مختلفة. للعثور على جميع الكيانات التي يحتوي صفيفها على القيمة 23 ، يمكنك استخدام تعبير التصفية التالي:
filter = 'ARRAY_CONTAINS(history_temperatures, 23)'
سيؤدي هذا إلى إرجاع جميع الكيانات التي يحتوي فيها المصفوف « history_temperatures » على القيمة « 23 ».
ARRAY_CONTAINS_ALL
يضمن عامل التشغيل ARRAY_CONTAINS_ALL وجود جميع عناصر القائمة المحددة في حقل المصفوفة. ويُعد هذا العامل مفيدًا عندما تريد مطابقة الكيانات التي تحتوي على قيم متعددة في المصفوفة.
مثال
إذا كنت تريد العثور على جميع الكيانات التي يحتوي مصفوفة history_temperatures فيها على كل من 23 و 24 ، فيمكنك استخدام:
filter = 'ARRAY_CONTAINS_ALL(history_temperatures, [23, 24])'
سيؤدي هذا إلى إرجاع جميع الكيانات التي يحتوي فيها المصفوف history_temperatures على كلتا القيمتين المحددتين.
ARRAY_CONTAINS_ANY
يتحقق عامل التشغيل ARRAY_CONTAINS_ANY من وجود أي عنصر من العناصر الموجودة في القائمة المحددة في حقل المصفوفة. ويكون هذا مفيدًا عندما تريد مطابقة الكيانات التي تحتوي على قيمة واحدة على الأقل من القيم المحددة في المصفوفة.
مثال
للعثور على جميع الكيانات التي يحتوي مصفوفة history_temperatures الخاصة بها على إما 23 أو 24 ، يمكنك استخدام:
filter = 'ARRAY_CONTAINS_ANY(history_temperatures, [23, 24])'
سيؤدي هذا إلى إرجاع جميع الكيانات التي يحتوي فيها المصفوفة history_temperatures على قيمة واحدة على الأقل من القيم 23 أو 24.
ARRAY_LENGTH
تُرجع دالة ARRAY_LENGTH طول (عدد عناصر) حقل المصفوفة. وهي تقبل معلمة واحدة فقط: معرف حقل المصفوفة.
مثال
للعثور على جميع الكيانات التي يحتوي فيها المصفوفة history_temperatures على أقل من 10 عناصر:
filter = 'ARRAY_LENGTH(history_temperatures) < 10'
سيُرجع هذا جميع الكيانات التي يحتوي مصفوفة history_temperatures الخاصة بها على أقل من 10 عناصر.
ARRAY_APPENDCompatible with Milvus 2.6.17+
يقوم عامل التشغيل ARRAY_APPEND بإلحاق عناصر الحمولة بحقل ARRAY موجود أثناء طلب upsert. وهو ليس تعبير تصفية. استخدمه عندما تريد إضافة قيم إلى مصفوفة دون الاستعلام أولاً عن قيمة المصفوفة الحالية.
يضيف المثال التالي بلغة Python "premium" إلى حقل ARRAY الخاص بـ tags للكيان الذي يكون مفتاحه الأساسي هو 1:
from pymilvus import FieldOp, MilvusClient
client = MilvusClient(
uri="http://localhost:19530",
token="root:Milvus"
)
client.upsert(
collection_name="users",
data=[{"pk": 1, "tags": ["premium"]}],
field_ops={"tags": FieldOp.array_append()},
)
يتيح إرفاق ARRAY_APPEND بحقل عبر field_ops إمكانية التحديث الجزئي لهذا الحقل. للاطلاع على سير العمل الكامل وأنواع العناصر المدعومة والحدود، راجع حقول ARRAY الخاصة بـ Upsert في وضع الدمج.
ARRAY_REMOVECompatible with Milvus 2.6.17+
يقوم عامل التشغيل ARRAY_REMOVE بإزالة كل عنصر من حقل ARRAY موجود يطابق قيمة في حمولة الطلب أثناء طلب upsert. وهو ليس تعبير تصفية. استخدمه عندما تريد إزالة القيم المطابقة من مصفوفة دون الاستعلام أولاً عن قيمة المصفوفة الحالية.
يزيل المثال التالي بلغة Python "trial" من حقل ARRAY الخاص بـ tags للكيان الذي يكون مفتاحه الأساسي هو 1:
from pymilvus import FieldOp, MilvusClient
client = MilvusClient(
uri="http://localhost:19530",
token="root:Milvus"
)
client.upsert(
collection_name="users",
data=[{"pk": 1, "tags": ["trial"]}],
field_ops={"tags": FieldOp.array_remove()},
)
يؤدي ربط ARRAY_REMOVE بحقل عبر field_ops إلى تمكين دلالات التحديث الجزئي لهذا الحقل. للاطلاع على سير العمل الكامل وأنواع العناصر المدعومة والحدود، راجع حقول ARRAY الخاصة بـ Upsert في وضع الدمج.