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(identifier, predicate): mengembalikan entitas yang mengandung setidaknya satu potongan yang dimulai dengan "Red" dalam sub-bidangtext; secara semantik, ini setara denganelement_filter.MATCH_ALL(identifier, predicate): mengembalikan entitas yang sub-bidang teksnya di semua potongan dimulai dengan "Red".MATCH_LEAST(identifier, predicate, k): mengembalikan entitas yang berisi setidaknya potongankyang dimulai dengan "Red" di sub-bidangtext.MATCH_MOST(identifier, predicate, k): mengembalikan entitas yang berisi paling banyak potongankyang dimulai dengan "Red" di sub-bidangtext.MATCH_EXACT(identifier, predicate, k): mengembalikan entitas yang berisi tepatkpotongan yang dimulai dengan "Red" di sub-bidangtext.
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 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 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 k.
CONTOH:
MATCH_EXACT(chunks, $[text] LIKE 'Red%', 3)