Sintaks $orderby OData di Azure AI Search
Di Pencarian Azure AI, parameter $orderby menentukan urutan pengurutan kustom untuk hasil pencarian. Artikel ini menguraikan sintaks OData $orderby dan memberikan contoh.
Konstruksi dan konstanta jalur bidang dijelaskan dalam gambaran umum bahasa OData di Azure AI Search. Untuk informasi selengkapnya tentang perilaku pengurutan, lihat Mengurutkan hasil.
Sintaks
Parameter $orderby menerima daftar yang dipisahkan koma hingga 32 klausul urutkan menurut. Sintaksis klausul urutkan menurut dijelaskan oleh EBNF (Extended Backus-Naur Form) berikut:
order_by_clause ::= (field_path | sortable_function) ('asc' | 'desc')?
sortable_function ::= geo_distance_call | 'search.score()'
Diagram sintaksis interaktif juga tersedia:
Catatan
Lihat Referensi sintaks ekspresi OData untuk Pencarian Azure AI untuk EBNF lengkap.
memiliki kriteria pengurutan, secara opsional diikuti oleh arah urutan (asc
menaik atau desc
menurun). Jika Anda tidak menentukan arah, urutan defaultnya adalah menaik. Jika ada nilai kosong dalam bidang, nilai kosong muncul terlebih dahulu jika urutannya adalah asc
dan terakhir jika urutannya adalah desc
.
Kriteria urutan bisa berupa jalur bidang sortable
atau panggilan ke fungsi geo.distance
atau search.score
.
Untuk bidang string, urutan pengurutan ASCII default dan urutan pengurutan Unicode default akan digunakan. Secara default, pengurutan peka huruf besar/kecil tetapi Anda dapat menggunakan normalizer untuk melakukan praproses teks sebelum mengurutkan untuk mengubah perilaku ini. Anda juga dapat menggunakan asciifolding
normalizer untuk mengonversi karakter non-ASCII ke ascii yang setara, jika ada.
Jika beberapa dokumen memiliki kriteria urutan yang sama dan fungsi search.score
tidak digunakan (misalnya, jika Anda mengurutkan berdasarkan bidang numerik Rating
, dan tiga dokumen yang semuanya memiliki peringkat 4), ikatan akan dipecah menurut skor dokumen dalam urutan menurun. Jika skor dokumen sama (misalnya, ketika tidak ada kueri pencarian teks lengkap yang ditentukan dalam permintaan), maka urutan relatif dokumen yang diikat tidak ditentukan.
Anda bisa menentukan beberapa kriteria urutan. Urutan ekspresi menentukan susunan urutan akhir. Misalnya, untuk urutan menurun menurut skor, diikuti dengan Peringkat, sintaksisnya adalah $orderby=search.score() desc,Rating desc
.
Sintaksis untuk geo.distance
dalam $orderby sama dengan yang ada di $filter. Saat menggunakan geo.distance
di $orderby, bidang yang diterapkannya harus berdasarkan jenis Edm.GeographyPoint
dan juga harus sortable
.
Sintaksis untuk search.score
dalam $orderby adalah search.score()
. Fungsi search.score
ini tidak mengambil parameter apa pun.
Contoh
Urutkan hotel menaik menurut tarif dasar:
$orderby=BaseRate asc
Urutkan hotel menurun menurut peringkat, lalu menaik menurut tarif dasar (ingat bahwa urutan menaik adalah default):
$orderby=Rating desc,BaseRate
Urutkan hotel menurun menurut peringkat, lalu menaik berdasarkan jarak dari koordinat yang diberikan:
$orderby=Rating desc,geo.distance(Location, geography'POINT(-122.131577 47.678581)') asc
Urutkan hotel dalam urutan menurun menurut search.score dan peringkat, lalu dalam urutan menaik berdasarkan jarak dari koordinat yang diberikan. Antara dua hotel dengan skor relevansi identik dan peringkat, yang terdekat adalah dicantumkan pertama:
$orderby=search.score() desc,Rating desc,geo.distance(Location, geography'POINT(-122.131577 47.678581)') asc