Syntaxe $orderby 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.

Ve službě Azure AI Vyhledávač určuje parametr $orderby vlastní pořadí řazení výsledků hledání. Tento článek popisuje syntaxi OData $orderby a poskytuje příklady.

Konstrukce a konstanty cesty pole jsou popsány v přehledu jazyka OData ve službě Azure AI Vyhledávač. Další informace o chování řazení naleznete v tématu Řazení výsledků.

Syntaxe

Parametr $orderby přijímá čárkami oddělený seznam až 32 klauzulí řazení podle. Syntaxe klauzule order-by je popsaná v následujícím formátu EBNF (Extended Backus-Naur Form):

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

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

K dispozici je také interaktivní diagram syntaxe:

Každá klauzule má kritéria řazení, volitelně následovaná směrem řazení (asc vzestupně nebo desc sestupně). Pokud nezadáte směr, výchozí hodnota je vzestupná. Pokud pole obsahuje hodnoty null, budou tyto hodnoty zobrazeny jako první, pokud je řazení asc, a jako poslední, pokud je řazení desc.

Kritériem řazení může být buď cesta sortable pole, nebo volání funkcí geo.distance nebo search.score.

Pro pole řetězců se použije výchozí řazení ASCII a výchozí řazení Unicode. Ve výchozím nastavení je řazení rozlišující malá a velká písmena, ale můžete použít normalizátor k předzpracování textu před řazením, abyste toto chování změnili. Pokud existuje, můžete pomocí asciifolding normalizátoru převést jiné znaky než ASCII na jejich ekvivalent ASCII.

Pokud má více dokumentů stejná kritéria řazení a search.score funkce se nepoužívá (například pokud ho seřadíte podle číselného Rating pole a tři dokumenty mají hodnocení 4), přeruší se vazby podle skóre dokumentu v sestupném pořadí. Pokud jsou skóre dokumentu stejné (například pokud v požadavku není zadaný žádný fulltextový vyhledávací dotaz), je relativní pořadí vázaných dokumentů neurčité.

Můžete zadat více kritérií řazení. Pořadí výrazů určuje konečné pořadí řazení. Pokud chcete například seřadit sestupně podle skóre a potom ratingu, syntaxe by byla $orderby=search.score() desc,Rating desc.

Syntaxe pro geo.distance $orderby je stejná jako v $filter. Při použití geo.distance v $orderby musí být pole, na které se vztahuje, také Edm.GeographyPoint a musí být typu sortable.

Syntaxe pro search.score $orderby je search.score(). Funkce search.score nepřebírají žádné parametry.

Příklady

Seřaďte hotely vzestupně podle základní sazby:

    $orderby=BaseRate asc

Seřaďte hotely sestupně podle hodnocení a potom vzestupně podle základní sazby (mějte na paměti, že vzestupné je výchozí):

    $orderby=Rating desc,BaseRate

Seřaďte hotely sestupně podle hodnocení a potom vzestupně podle vzdálenosti od daných souřadnic:

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

Seřaďte hotely v sestupném pořadí podle výsledků hledání.skóre a hodnocení a potom ve vzestupném pořadí podle vzdálenosti od daných souřadnic. Mezi dvěma hotely s identickými skóre a hodnoceními podle relevance je jako první uveden nejbližší:

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

Viz také