OData $orderby szintaxis 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.

Az Azure AI Keresésben a $orderby paraméter egyéni rendezési sorrendet ad meg a keresési eredményekhez. Ez a cikk a $orderby OData szintaxisát ismerteti, és példákat tartalmaz.

A mezőút felépítését és állandóit az Azure AI Keresés OData nyelvének áttekintésében ismertetjük. A rendezési viselkedésről további információt a Rendezési eredmények című témakörben talál.

Szintaxis

A $orderby paraméter legfeljebb 32 rendezési záradék vesszővel tagolt listáját fogadja el. Az order-by záradék szintaxisát a következő EBNF (Extended Backus-Naur Form) írja le:

order_by_clause ::= (field_path | sortable_function) ('asc' | 'desc')?

sortable_function ::= geo_distance_call | 'search.score()'

Interaktív szintaxisdiagram is elérhető:

Feljegyzés

A teljes EBNF-hez tekintse meg az Azure AI Keresés OData-kifejezésszintaxis-hivatkozását.

Minden záradéknak vannak rendezési feltételei, amelyeket opcionálisan egy rendezési irány követ (asc növekvő vagy desc csökkenő). Ha nem ad meg irányt, az alapértelmezett érték növekvő. Ha a mezőben null értékek vannak, akkor a null értékek jelennek meg először, ha a rendezés asc, és utoljára, ha a rendezés desc.

A rendezési kritériumok lehetnek egy mező elérési útja sortable vagy a geo.distance vagy a search.score függvények hívása.

Sztringmezők esetén a rendszer az alapértelmezett ASCII rendezési sorrendet és az alapértelmezett Unicode rendezési sorrendet használja. Alapértelmezés szerint a rendezés megkülönbözteti a kis- és nagybetűket, de a rendezés előtt egy normalizálóval előre feldolgozhatja a szöveget, hogy megváltoztassa ezt a viselkedést. Normalizálóval asciifolding is konvertálhat nem ASCII-karaktereket ASCII-ekvivalenssé, ha létezik ilyen.

Ha több dokumentumnak azonos rendezési feltételei vannak, és a search.score függvény nincs használatban (például ha numerikus Rating mező szerint rendez, és három dokumentum mindegyike 4-es minősítéssel rendelkezik), a kapcsolatokat a dokumentum pontszáma csökkenő sorrendben bontja fel. Ha a dokumentum pontszámai megegyeznek (például ha nincs megadva teljes szöveges keresési lekérdezés a kérelemben), akkor a kapcsolódó dokumentumok relatív sorrendje határozatlan.

Több rendezési feltételt is megadhat. A kifejezések sorrendje határozza meg a végső rendezési sorrendet. Ha például a csökkenő sorrendet pontszám, majd értékelés szerint szeretné rendezni, akkor a szintaxis a következő: $orderby=search.score() desc,Rating desc.

A geo.distance szintaxisa az $orderby-ban ugyanaz, mint a $filter-ben. A geo.distance használatakor a $orderby-ban a mezőnek, amelyhez tartozik, típusúnak kell lennie, és Edm.GeographyPointsortable is kell lennie.

A search.score szintaxisa az $orderby esetén search.score(). A függvény search.score nem vesz fel paramétereket.

Példák

A szállodák rendezése az alapkamat alapján növekvő sorrendben:

    $orderby=BaseRate asc

Rendezze a szállodákat az értékelés szerint csökkenő, majd az alapkamat alapján növekvő sorrendbe (ne feledje, hogy a növekvő az alapértelmezett):

    $orderby=Rating desc,BaseRate

Rendezze a szállodákat csökkenő sorrendben az értékelés alapján, majd a megadott koordinátáktól való távolság alapján növekvő sorrendet:

    $orderby=Rating desc,geo.distance(Location, geography'POINT(-122.131577 47.678581)') asc

Rendezze a szállodákat csökkenő sorrendben a search.score és az értékelés szerint, majd növekvő sorrendben a megadott koordinátáktól való távolság alapján. Két azonos relevanciájú pontszámmal és értékeléssel rendelkező szálloda között a legközelebbi az első:

    $orderby=search.score() desc,Rating desc,geo.distance(Location, geography'POINT(-122.131577 47.678581)') asc

Lásd még