Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Operator pengumpulan OData di Pencarian Azure AI -
Catatan
Pencarian Azure AI tersedia melalui portal Azure, REST API, dan Azure SDK. Ini juga mendukung Foundry IQ, lapisan pengetahuan terkelola yang mengubah konten perusahaan menjadi pangkalan pengetahuan yang dapat digunakan kembali dan sadar izin untuk agen di portal Microsoft Foundry.
Saat menulis ekspresi filter OData untuk digunakan dengan Pencarian Azure AI, sering kali berguna untuk memfilter bidang koleksi. Anda dapat mencapai ini menggunakan operator any dan all.
Sintaks
EBNF berikut (Extended Backus-Naur Form) menentukan tata bahasa dari ekspresi OData yang menggunakan any atau all.
collection_filter_expression ::=
field_path'/all(' lambda_expression ')'
| field_path'/any(' lambda_expression ')'
| field_path'/any()'
lambda_expression ::= identifier ':' boolean_expression
Diagram sintaksis interaktif juga tersedia:
Catatan
Lihat Referensi sintaks ekspresi OData untuk Pencarian Azure AI untuk EBNF lengkap.
Ada tiga bentuk ekspresi yang memfilter kumpulan.
- Dua yang pertama melakukan iterasi pada bidang koleksi dengan menerapkan predikat yang diberikan dalam bentuk ekspresi lambda ke setiap elemen koleksi.
- Ekspresi yang menggunakan
allmenampilkantruejika predikatnya adalah true untuk setiap elemen kumpulan. - Ekspresi yang menggunakan
anymenampilkantruejika predikatnya adalah true untuk minimal satu elemen kumpulan.
- Ekspresi yang menggunakan
- Bentuk ketiga filter kumpulan menggunakan
anytanpa ekspresi lambda untuk menguji apakah bidang kumpulan kosong. Jika kumpulan memiliki elemen apa pun, maka akan menampilkantrue. Jika kumpulan kosong, maka akan menampilkanfalse.
Ekspresi lambda dalam filter kumpulan mirip dengan isi perulangan dalam bahasa pemrograman. Ekspresi tersebut mendefinisikan variabel, yang disebut variabel rentang, yang menyimpan elemen kumpulan saat ini selama pengulangan. Ekspresi tersebut juga mendefinisikan ekspresi boolean lain yang merupakan kriteria filter untuk diterapkan ke variabel rentang untuk setiap elemen kumpulan.
Contoh
Mencocokkan dokumen di mana bidang tags berisi tepat string "wifi":
tags/any(t: t eq 'wifi')
Mencocokkan dokumen di mana setiap elemen bidang ratings berada di antara 3 dan 5, termasuk:
ratings/all(r: r ge 3 and r le 5)
Mencocokkan dokumen di mana setiap koordinat geografi di bidang locations berada dalam poligon tertentu:
locations/any(loc: geo.intersects(loc, geography'POLYGON((-122.031577 47.578581, -122.031577 47.678581, -122.131577 47.678581, -122.031577 47.578581))'))
Mencocokkan dokumen di mana bidang rooms kosong:
not rooms/any()
Cocokkan dokumen di mana untuk semua ruangan, bidang rooms/amenities berisi "tv", dan rooms/baseRate lebih kecil dari 100:
rooms/all(room: room/amenities/any(a: a eq 'tv') and room/baseRate lt 100.0)
Batasan
Tidak setiap fitur ekspresi filter tersedia di dalam isi ekspresi lambda. Batasan dapat berbeda bergantung pada jenis data bidang kumpulan yang ingin Anda filter. Tabel berikut meringkas batasan.
| Jenis Data | Fitur yang diizinkan dalam ekspresi lambda dengan any |
Fitur yang diizinkan dalam ekspresi lambda dengan all |
|---|---|---|
Collection(Edm.ComplexType) |
Semuanya kecuali search.ismatch dan search.ismatchscoring |
Sama |
Collection(Edm.String) |
Perbandingan dengan eq atau search.in Menggabungkan sub-ekspresi dengan or |
Perbandingan dengan ne atau not search.in() Menggabungkan sub-ekspresi dengan and |
Collection(Edm.Boolean) |
Perbandingan dengan eq atau ne |
Sama |
Collection(Edm.GeographyPoint) |
Menggunakan geo.distance dengan lt atau le geo.intersects Menggabungkan sub-ekspresi dengan or |
Menggunakan geo.distance dengan gt atau ge not geo.intersects(...) Menggabungkan sub-ekspresi dengan and |
Collection(Edm.DateTimeOffset),Collection(Edm.Double),Collection(Edm.Int32),Collection(Edm.Int64) |
Perbandingan menggunakan eq, ne, lt, gt, le, atau ge Menggabungkan perbandingan dengan sub-ekspresi lain menggunakan or Menggabungkan perbandingan kecuali ne dengan sub-ekspresi lain menggunakan and Ekspresi menggunakan kombinasi and dan or dalam Bentuk Normal Disjungtif (DNF) |
Perbandingan menggunakan eq, ne, lt, gt, le, atau ge Menggabungkan perbandingan dengan sub-ekspresi lain menggunakan and Menggabungkan perbandingan kecuali eq dengan sub-ekspresi lain menggunakan or Ekspresi yang menggunakan kombinasi and dan or dalam Bentuk Normal Konjungtif (CNF) |
Untuk detail selengkapnya tentang batasan ini serta contoh, lihat Memecahkan masalah filter koleksi di Pencarian Azure AI. Untuk informasi lebih mendalam tentang mengapa batasan ini ada, lihat Memahami filter koleksi di Pencarian Azure AI.