Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
OData-gyűjtemény-operátorok az Azure AI Keresésben –
Feljegyzés
Azure AI Keresés a Azure portálon, REST API-kon és Azure SDK-k keresztül érhető el. Emellett a Foundry IQ-t is támogatja, amely a vállalati tartalmakat újrafelhasználható, engedélytudatos tudásbázisokká alakítja át az Microsoft Foundry portálon található ügynökök számára.
Amikor OData-szűrőkifejezést ír az Azure AI Keresés szolgáltatással való használatra, gyakran hasznos a gyűjteménymezőkre szűrni. Ezt a any és all operátorok használatával érheti el.
Szintaxis
Az alábbi EBNF (Extended Backus-Naur Form) meghatározza egy OData-kifejezés nyelvtanát, amely any vagy all használ.
collection_filter_expression ::=
field_path'/all(' lambda_expression ')'
| field_path'/any(' lambda_expression ')'
| field_path'/any()'
lambda_expression ::= identifier ':' boolean_expression
Interaktív szintaxisdiagram is elérhető:
Feljegyzés
A teljes EBNF megtekintéséhez lásd az Azure AI Keresés OData kifejezés szintaxishivatkozását.
A gyűjteményeket három kifejezésforma szűri.
- Az első kettő iterál egy gyűjteménymezőn, és egy lambda kifejezés formájában megadott predikátumot alkalmaz a gyűjtemény minden elemére.
- A
allkifejezéstrueértéket ad vissza, ha a predikátum igaz a gyűjtemény minden elemére. - Egy kifejezés, amely a(z)
any-t használja, atrue-t adja vissza, ha a predikátum a gyűjtemény legalább egy elemére igaz.
- A
- A gyűjteményszűrő harmadik formája lambda kifejezés nélkül teszteli
any, hogy egy gyűjteménymező üres-e. Ha a gyűjteménynek vannak elemei, visszaadjatrue. Ha a gyűjtemény üres, az eredményfalse.
A gyűjteményszűrők lambda-kifejezése olyan, mint egy programozási nyelv hurkojának törzse. Egy tartományváltozónak nevezett változót definiál, amely a gyűjtemény aktuális elemét tartalmazza az iteráció során. Emellett definiál egy másik logikai kifejezést is, amely a tartományváltozóra mint szűrőfeltétel alkalmazandó a gyűjtemény egyes elemeire.
Példák
Egyezik azokkal a dokumentumokkal, amelyek tags mezőjében pontosan a "wifi" karakterlánc található.
tags/any(t: t eq 'wifi')
Egyeznie kell azokkal a dokumentumokkal, ahol a ratings mező minden eleme 3 és 5 közé esik, beleértve a következőt:
ratings/all(r: r ge 3 and r le 5)
Egyezik azokkal a dokumentumokkal, amelyekben a locations mező bármelyik geokoordinátája az adott sokszögben található:
locations/any(loc: geo.intersects(loc, geography'POLYGON((-122.031577 47.578581, -122.031577 47.678581, -122.131577 47.678581, -122.031577 47.578581))'))
Egyezik azokkal a dokumentumokkal, ahol a rooms mező üres:
not rooms/any()
Keresse meg azokat a dokumentumokat, ahol (az összes helyiségben) a rooms/amenities mező "tv"-t tartalmaz, és a rooms/baseRate kisebb mint 100.
rooms/all(room: room/amenities/any(a: a eq 'tv') and room/baseRate lt 100.0)
Korlátozások
A szűrőkifejezések nem minden funkciója érhető el a lambda kifejezés törzsében. A korlátozások a szűrni kívánt gyűjteménymező adattípusától függően eltérőek. Az alábbi táblázat összefoglalja a korlátozásokat.
| Adattípus | Lambda-kifejezésekben a következő jellemzők engedélyezettek: any |
Lambda-kifejezésekben a következő jellemzők engedélyezettek: all |
|---|---|---|
Collection(Edm.ComplexType) |
Minden, kivéve search.ismatch és search.ismatchscoring |
Ugyanaz |
Collection(Edm.String) |
Összehasonlítások a eq vagy a search.in-vel A részkifejezések kombinálása or |
Összehasonlítások a ne vagy a not search.in()-vel A részkifejezések kombinálása and |
Collection(Edm.Boolean) |
Összehasonlítások a eq vagy a ne-vel |
Ugyanaz |
Collection(Edm.GeographyPoint) |
Használat geo.distance a következővel: lt vagy le geo.intersects A részkifejezések kombinálása or |
Használat geo.distance a következővel: gt vagy ge not geo.intersects(...) A részkifejezések kombinálása and |
Collection(Edm.DateTimeOffset), Collection(Edm.Double), Collection(Edm.Int32)Collection(Edm.Int64) |
Összehasonlítások a következőkkel: eq, ne, lt, gt, levagy ge Összehasonlítások kombinálása más alkifejezésekkel or Összehasonlítások ne kivételével más alkifejezések and történő kombinálása Kifejezések, amelyek and és or kombinációit használják a Diszjunktív Normál Forma (DNF)-ban |
Összehasonlítások a következőkkel: eq, ne, lt, gt, levagy ge Összehasonlítások kombinálása más alkifejezésekkel and Összehasonlítások eq kivételével más alkifejezések or történő kombinálása Kifejezések a and és or kombinációit használva a konjunktív normál formában (CNF) |
Ezekről a korlátozásokról és példákról további információt az Azure AI Keresés gyűjteményszűrőinek hibaelhárítása című témakörben talál. A korlátozások okaival kapcsolatos részletesebb információkért tekintse meg az Azure AI Keresés gyűjteményszűrőinek ismertetését.