Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Operátory kolekce OData ve službě Azure AI Vyhledávač –
Poznámka:
Azure AI Vyhledávač je k dispozici prostřednictvím portálu Azure, rozhraní REST API a Sady Azure SDK. Podporuje také Foundry IQ, spravovanou znalostní vrstvu, která transformuje podnikový obsah na opakovaně použitelné znalostní báze s podporou oprávnění pro agenty na portálu Microsoft Foundry.
Při psaní výrazu filtru OData, který se má použít se službou Azure AI Vyhledávač, je často užitečné filtrovat podle polí kolekce. Toho můžete dosáhnout pomocí any operátorů a all operátorů.
Syntaxe
Následující formulář EBNF (Extended Backus-Naur Form) definuje gramatiku výrazu OData, který používá any nebo all.
collection_filter_expression ::=
field_path'/all(' lambda_expression ')'
| field_path'/any(' lambda_expression ')'
| field_path'/any()'
lambda_expression ::= identifier ':' boolean_expression
K dispozici je také interaktivní diagram syntaxe:
Poznámka:
Úplný soubor EBNF najdete v referenčních informacích k syntaxi výrazů OData pro Azure AI Vyhledávač .
Existují tři formy výrazů, které filtrují kolekce.
- První dvě zpracovávají kolekci, uplatňují na každý prvek kolekce predikát zadaný ve formě lambda výrazu.
- Výraz, který používá
all, vrátítrue, pokud je predikát pravdivý pro každý prvek kolekce. - Výraz, který používá
any, vrátítrue, pokud je predikát pravdivý pro alespoň jeden prvek kolekce.
- Výraz, který používá
- Třetí forma filtru kolekce používá
anybez výrazu lambda k otestování, zda je pole kolekce prázdné. Pokud kolekce obsahuje nějaké prvky, vrátítrue. Pokud je kolekce prázdná, vrátí hodnotufalse.
Výraz lambda ve filtru kolekce je jako tělo smyčky v programovacím jazyce. Definuje proměnnou, která se nazývá proměnná rozsahu, která obsahuje aktuální prvek kolekce během iterace. Definuje také další logický výraz, který je kritériem filtru, který se použije na proměnnou rozsahu pro každý prvek kolekce.
Příklady
Vyhledejte dokumenty, jejichž tags pole obsahuje přesně řetězec "wifi".
tags/any(t: t eq 'wifi')
Porovná dokumenty, ve kterých každý prvek ratings pole spadá mezi 3 a 5 včetně:
ratings/all(r: r ge 3 and r le 5)
Porovná dokumenty, ve kterých se v daném mnohoúhelníku nachází některá z geografických souřadnic v locations poli:
locations/any(loc: geo.intersects(loc, geography'POLYGON((-122.031577 47.578581, -122.031577 47.678581, -122.131577 47.678581, -122.031577 47.578581))'))
Porovná dokumenty, ve rooms kterých je pole prázdné:
not rooms/any()
Porovná dokumenty, ve kterých (pro všechny místnosti) rooms/amenities pole obsahuje "tv", a rooms/baseRate je menší než 100:
rooms/all(room: room/amenities/any(a: a eq 'tv') and room/baseRate lt 100.0)
Omezení
Ne každá funkce výrazů filtru je k dispozici uvnitř textu výrazu lambda. Omezení se liší v závislosti na datovém typu pole kolekce, které chcete filtrovat. Následující tabulka shrnuje omezení.
| Datový typ | Funkce povolené ve výrazech lambda s využitím any |
Funkce povolené ve výrazech lambda s využitím all |
|---|---|---|
Collection(Edm.ComplexType) |
Vše kromě search.ismatch a search.ismatchscoring |
Stejné |
Collection(Edm.String) |
Porovnání s eq nebo search.in Kombinování dílčích výrazů s or |
Porovnání s ne nebo not search.in() Kombinování dílčích výrazů s and |
Collection(Edm.Boolean) |
Porovnání s eq nebo ne |
Stejné |
Collection(Edm.GeographyPoint) |
Použití geo.distance s lt nebo le geo.intersects Kombinování dílčích výrazů s or |
Použití geo.distance s gt nebo ge not geo.intersects(...) Kombinování dílčích výrazů s and |
Collection(Edm.DateTimeOffset), Collection(Edm.Double), , Collection(Edm.Int32)Collection(Edm.Int64) |
Porovnání pomocí eq, , nelt, gt, , le, neboge Kombinování porovnání s jinými dílčími výrazy pomocí or Kombinování porovnání, kromě těch, která zahrnují ne, s jinými dílčími výrazy pomocí and Výrazy používající kombinace and a or v disjunktivní normální formě (DNF) |
Porovnání pomocí eq, , nelt, gt, , le, neboge Kombinování porovnání s jinými dílčími výrazy pomocí and Kombinování porovnání, kromě těch, která zahrnují eq, s jinými dílčími výrazy pomocí or Výrazy používající kombinace and a or v konjunktivní normální formě (CNF) |
Další podrobnosti o těchto omezeních a příkladech najdete v tématu Řešení potíží s filtry kolekcí ve službě Azure AI Vyhledávač. Podrobnější informace o tom, proč tato omezení existují, najdete v tématu Vysvětlení filtrů kolekcí ve službě Azure AI Vyhledávač.