Operator StructArrayCompatible with Milvus 3.0.x

Larik Struktur, atau StructArray, dalam sebuah entitas menyimpan sekumpulan elemen Struktur yang terurut. Setiap Struktur dalam Larik memiliki skema yang telah ditentukan sebelumnya, yang terdiri dari beberapa vektor dan bidang skalar. Ketika sub-bidang skalar dalam Struct diindeks, Anda dapat menggunakan filter elemen dan operator dalam keluarga pencocokan untuk melakukan pemfilteran skalar di atasnya.

Filter elemen memilih entitas yang mengandung setidaknya satu nilai dalam bidang StructArray yang cocok dengan predikat yang ditentukan. Sebaliknya, operator keluarga pencocokan digunakan untuk menemukan entitas yang mengandung jumlah atau proporsi nilai tertentu dalam bidang StructArray yang cocok dengan predikat yang ditentukan.

Saat membuat predikat terhadap $[subField], pastikan subbidang diindeks jika Anda bekerja dengan kumpulan data berskala besar, karena operator ini memerlukan perulangan melalui elemen larik untuk setiap entitas kandidat.

Filter elemen

Gunakan filter elemen ketika Anda perlu memeriksa apakah suatu entitas berisi nilai yang cocok dengan predikat tertentu dalam bidang StructArray.

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

Seperti yang ditunjukkan pada ekspresi filter elemen di atas, filter elemen mengembalikan entitas yang mengandung setidaknya satu potongan yang dimulai dengan "Red" di sub-bidang text. Parameter pertama adalah nama bidang StructArray, sedangkan parameter kedua adalah predikat yang berlaku untuk sub-bidang Struct.

Anda dapat menggunakan operator perbandingan, rentang, dan aritmatika untuk membuat kondisi, dan operator logika untuk menggabungkan beberapa kondisi, seperti yang ditunjukkan di Operator Dasar.

Namun, ketika Anda membuat ekspresi filter yang menggabungkan predikat tingkat entitas dan filter elemen, Anda harus selalu menempatkan fltler elemen di bagian akhir, seperti yang ditunjukkan pada contoh berikut.

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

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

Operator keluarga pencocokan

Operator keluarga pencocokan juga bekerja di atas bidang StructArray. Daripada hanya memeriksa apakah sebuah elemen ada, Anda bisa menentukan berapa banyak elemen (atau proporsi) yang harus memenuhi predikat elemen.

MATCH_ANY

Operator ini bernilai benar jika setidaknya satu elemen dalam larik memenuhi predikat, yang mengindikasikan bahwa ekuivalen struktural dari logika OR di semua elemen larik.

Operator MATCH_ANY dan filter elemen secara semantik sama, dan Anda dapat menggunakannya secara bergantian. Ketika Anda perlu mengekspresikan logika count(matches) >= 1, Anda harus menggunakannya.

CONTOH:

Contoh berikut ini mengembalikan entitas di mana bagian mana pun dari dokumen dimulai dengan "Merah".

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

MATCH_ALL

Operator ini bernilai benar hanya jika setiap elemen dalam larik memenuhi predikat.

Ketika Anda perlu mengekspresikan logika count(matches) == total elements, gunakan operator ini.

CONTOH:

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

MATCH_LEAST

Operator ini adalah filter kuantitatif yang menghasilkan nilai true jika jumlah elemen yang memenuhi predikat lebih besar atau sama dengan konstanta tertentu kk k.

Ketika Anda perlu mengekspresikan logika count(matches) >= k, gunakan operator ini.

CONTOH

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

MATCH_MOST

Operator ini adalah filter kuantitatif yang mengembalikan nilai true jika jumlah elemen yang memenuhi predikat kurang dari atau sama dengan konstanta tertentu kk k.

Ini sangat berguna untuk menyaring entitas yang terlalu banyak menargetkan kata kunci tertentu (pengurangan noise).

CONTOH:

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

MATCH_EXACT

Operator ini adalah operator kuantitatif yang paling ketat di dalam keluarga ini. Operator ini menghasilkan nilai benar jika dan hanya jika jumlah elemen yang memenuhi predikat adalah tepat kk k.

CONTOH:

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

Coba Milvus yang Dikelola secara Gratis

Zilliz Cloud bebas masalah, didukung oleh Milvus dan 10x lebih cepat.

Mulai
Umpan balik

Apakah halaman ini bermanfaat?