Azure AI Search의 OData $orderby 구문
Azure AI Search 에서 $orderby 매개 변수는 검색 결과에 대한 사용자 지정 정렬 순서를 지정합니다. 이 문서에서는 $orderby의 OData 구문을 설명하고 예제를 제공합니다.
필드 경로 생성 및 상수는 Azure AI Search의 OData 언어 개요에 설명되어 있습니다. 정렬 동작에 대한 자세한 내용은 결과 순서 지정을 참조하세요.
구문
$orderby 매개 변수는 최대 32개의 순서별 절의 쉼표로 구분된 목록을 허용합니다. order-by 절의 구문은 다음 EBNF(Extended Backus-Naur Form)에서 설명합니다.
order_by_clause ::= (field_path | sortable_function) ('asc' | 'desc')?
sortable_function ::= geo_distance_call | 'search.score()'
다음과 같은 대화형 구문 다이어그램도 사용할 수 있습니다.
참고 항목
전체 EBNF는 Azure AI Search의 OData 식 구문 참조를 참조하세요.
각 절에는 정렬 조건이 있으며, 선택적으로 정렬 방향(asc
오름차순 또는 desc
내림차순)이 옵니다. 방향을 지정하지 않으면 기본값으로 오름차순을 사용합니다. 필드에 null 값이 있는 경우 정렬이 있으면 null 값이 먼저 표시되고 정렬이 asc
마지막이면 null 값이 desc
표시됩니다.
정렬 조건은 필드의 sortable
경로 또는 함수 또는 함수에 대한 geo.distance
search.score
호출일 수 있습니다.
문자열 필드의 경우 기본 ASCII 정렬 순서와 기본 유니코드 정렬 순서가 사용됩니다. 기본적으로 정렬은 대/소문자를 구분하지만 정렬하기 전에 normalizer를 사용하여 텍스트를 전처리하여 이 동작을 변경할 수 있습니다. asciifolding
정규화기를 사용하여 ASCII가 아닌 문자가 있는 경우 ASCII와 동등한 문자로 변환할 수도 있습니다.
여러 문서에 동일한 정렬 조건이 있고 search.score
함수가 사용되지 않는 경우(예: 숫자 Rating
필드를 기준으로 정렬하고 3개의 문서 모두 등급이 4인 경우) 내림차순으로 문서 점수로 연결이 끊어집니다. 문서 점수가 같으면(예: 요청에 전체 텍스트 검색 쿼리가 지정되지 않은 경우) 연결된 문서의 상대적 순서가 확정되지 않습니다.
여러 정렬 기준을 지정할 수 있습니다. 식 순서에 따라 최종 정렬 순서가 결정됩니다. 예를 들어 점수로 내림차순으로 정렬한 다음 등급으로 정렬하려면 구문이 사용됩니다 $orderby=search.score() desc,Rating desc
.
$orderby 구문은 $filter 구문 geo.distance
과 동일합니다. $orderby 사용할 geo.distance
때 적용되는 필드는 형식 Edm.GeographyPoint
이어야 하며 형식이어야 sortable
합니다.
$orderby 구문 search.score
은 .입니다search.score()
. 함수 search.score
는 매개 변수를 취하지 않습니다.
예제
기본 요금에 따라 호텔 오름차순 정렬:
$orderby=BaseRate asc
호텔을 등급별로 내림차순으로 정렬한 다음 기본 요금으로 오름차순으로 정렬합니다(오름차순이 기본값임).
$orderby=Rating desc,BaseRate
호텔을 등급별로 내림차순으로 정렬한 다음 지정된 좌표에서 거리를 기준으로 오름차순으로 정렬합니다.
$orderby=Rating desc,geo.distance(Location, geography'POINT(-122.131577 47.678581)') asc
search.score 및 등급을 기준으로 내림차순으로 호텔을 정렬한 다음, 지정된 좌표에서의 거리를 기준으로 오름차순으로 호텔을 정렬합니다. 관련성 점수와 등급이 동일한 두 호텔 사이에 가장 가까운 호텔이 먼저 나열됩니다.
$orderby=search.score() desc,Rating desc,geo.distance(Location, geography'POINT(-122.131577 47.678581)') asc