Azure Yapay Zeka Arama'te OData $orderby söz dizimi

Azure Yapay Zeka Arama'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 Yapay Zeka Arama'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 cümlesinin 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

Tam EBNF için Azure Yapay Zeka Arama'e yönelik OData ifade söz dizimi başvurusuna bakın: .

Her bir bağımsız cümlenin sıralama ölçütleri vardır ve isteğe bağlı olarak bir sıralama yönü (asc artan veya desc azalan) takip eder. Bir yön belirtmezseniz, varsayılan değer artandır. Alanında null değerler varsa, sıralama asc ise null değerler önce gelir, sıralama desc ise null değerler sona gelir.

Sıralama ölçütleri, ya bir sortable alanın yolu ya da geo.distance veya search.score işlevlerine yapılan 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şlevi kullanılmıyorsa (örneğin, sayısal Rating bir alana göre sıralarsanız ve üç belgenin derecelendirmeleri 4 ise), eşitlik bozma belgelerin puanlarına göre azalan sırayla yapılır. 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 geo.distance türünde olmalı ve ayrıca ve Edm.GeographyPoint olmalıdır.

$c1>orderby için sözdizimi şeklindedir. İşlev search.score herhangi bir parametre almaz.

Örnekler

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

    $orderby=BaseRate asc

Otelleri önce puana göre azalan, ardından taban fiyata göre artan şekilde sıralayın (artışın varsayılan 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.