OData $orderby szintaxis az Azure AI Searchben

Az Azure AI Searchben 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 Search 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.

Syntax

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ő:

Megjegyzés:

A teljes EBNF-hez tekintse meg az Azure AI Search 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 az asc utolsó, ha a rendezés.desc

A rendezési feltételek lehetnek egy mező elérési útjai sortable , vagy a függvények vagy a függvények hívása geo.distancesearch.score .

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 normalizálóval előre feldolgozhatja a szöveget. 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 $orderby szintaxisa geo.distance megegyezik a $filter. A $orderby használata geo.distance esetén a mezőnek, amelyre vonatkozik, típusnak Edm.GeographyPoint kell lennie, és annak is kell lenniesortable.

A $orderby szintaxisa search.score a következő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

Kapcsolódó információk