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ő:
Feljegyzé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.distance
search.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