Azure AI Search'te OData $orderby söz dizimi

Azure AI Search'te $orderby parametresi arama sonuçları için özel bir sıralama düzeni belirtir. Bu makalede, $orderby OData söz dizimi açıklanır ve örnekler sağlanır.

Alan yolu oluşturma ve sabitler, Azure AI Search'teki OData diline genel bakış bölümünde açıklanmıştır. Sıralama davranışları hakkında daha fazla bilgi için bkz . Sonuçları sıralama.

Sözdizimi

$orderby parametresi en fazla 32 order-by yan tümcesinin virgülle ayrılmış listesini kabul eder. Order-by yan tümcesinin söz dizimi aşağıdaki EBNF (Genişletilmiş Backus-Naur Formu) tarafından açıklanmıştır:

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

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

Etkileşimli söz dizimi diyagramı da kullanılabilir:

Not

EbNF'nin tamamı için bkz . Azure AI Search için OData ifade söz dizimi başvurusu.

Her yan tümcenin sıralama ölçütleri vardır ve isteğe bağlı olarak bir sıralama yönü (asc artan veya desc azalan için) izler. Bir yön belirtmezseniz, varsayılan değer artandır. Alanında null değerler varsa, sıralama ise önce null değerler, sıralama asc descise son olarak ise null değerler görüntülenir.

Sıralama ölçütleri bir sortable alanın yolu veya ya da işlevlerine yapılan geo.distance search.score bir çağrı olabilir.

Dize alanları için varsayılan ASCII sıralama düzeni ve varsayılan Unicode sıralama düzeni kullanılır. Varsayılan olarak, sıralama büyük/küçük harfe duyarlıdır, ancak bu davranışı değiştirmek için sıralamadan önce metni önceden işlemek için normalleştirici kullanabilirsiniz. Varsa, ASCII olmayan karakterleri ASCII eşdeğerlerine dönüştürmek için de bir asciifolding normalleştirici kullanabilirsiniz.

Birden çok belge aynı sıralama ölçütlerine sahipse ve search.score işlev kullanılmıyorsa (örneğin, sayısal Rating bir alana göre sıralarsanız ve üç belgenin derecelendirmesi 4 ise), belgeler azalan düzende puana göre kesilir. Belge puanları aynı olduğunda (örneğin, istekte tam metin arama sorgusu belirtilmediğinde), bağlı belgelerin göreli sıralaması belirsizdir.

Birden çok sıralama ölçütü belirtebilirsiniz. İfadelerin sırası, son sıralama düzenini belirler. Örneğin, puana göre azalan sıralama yapmak ve derecelendirmeyi takip etmek için söz dizimi olur $orderby=search.score() desc,Rating desc.

$orderby için söz dizimigeo.distance, $filter ile aynıdır. $orderby kullanırken, uygulandığı alan türünde Edm.GeographyPoint olmalı ve aynı zamanda olmalıdırsortable.geo.distance

$orderby için söz dizimi search.score şeklindedirsearch.score(). İşlev search.score herhangi bir parametre almaz.

Örnekler

Otelleri taban ücrete göre artan şekilde sıralayın:

    $orderby=BaseRate asc

Derecelendirmeye göre azalan ve ardından taban hıza göre artan otelleri sıralayın (artanın varsayılan değer olduğunu unutmayın):

    $orderby=Rating desc,BaseRate

Azalan otelleri derecelendirmeye göre sıralayın ve ardından verilen koordinatlardan uzaklığı göre artan şekilde sıralayın:

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

Otelleri search.score ve derecelendirmeye göre azalan düzende sıralayın ve ardından verilen koordinatlardan uzaklığı göre artan düzende sıralayın. Aynı ilgi puanına ve derecelendirmesine sahip iki otel arasında ilk olarak en yakın otel listelenir:

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

Ayrıca bkz.