Bagikan melalui


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

Baca juga