Anda dapat menentukan klausa sort untuk mengurutkan hasil query dalam urutan naik atau turun berdasarkan bidang tertentu.
Deskripsi
Sintaks klausa sort: +Field1;-Field2.
Field1 dan Field2 adalah bidang yang digunakan untuk mengurutkan hasil query. Tanda plus (+) menunjukkan pengurutan dalam urutan naik berdasarkan Field1, sedangkan tanda minus (-) menunjukkan pengurutan dalam urutan turun berdasarkan Field2.
Bidang-bidang tersebut dapat dihubungkan menggunakan Operator aritmatika dasar seperti penambahan (+), pengurangan (-), perkalian (*), dan pembagian (/). Bidang yang dihubungkan oleh suatu Operator harus memiliki tipe data yang sama.
OpenSearch mendukung pengurutan multi-dimensi. Anda dapat menentukan beberapa aturan pengurutan dalam klausa sort, dipisahkan dengan titik koma (;). Jika beberapa aturan pengurutan ditentukan, sistem akan mengurutkan hasil query berdasarkan aturan pertama, kemudian mengurutkan hasil dengan relevansi yang sama berdasarkan aturan kedua, dan seterusnya hingga semua hasil diurutkan sesuai harapan.
Anda dapat menentukan RANK sebagai aturan pengurutan dalam klausa sort. RANK menentukan skor relevansi yang dihitung berdasarkan ekspresi sort yang Anda tentukan.
Catatan Penggunaan
Klausa sort bersifat opsional. Jika tidak disertakan, klausa sort default yaitu sort=-RANK akan digunakan. Sistem mengurutkan hasil query dalam urutan turun berdasarkan skor relevansi yang dihitung dari ekspresi sort yang Anda tentukan. Jika RANK tidak ditentukan dalam klausa sort, ekspresi sort yang Anda tentukan tidak akan berlaku.
Bidang yang ditentukan dalam klausa sort harus merupakan bidang atribut yang didefinisikan dalam file schema.json.
Fungsi dengan nilai kembalian bertipe INT atau FLOAT dapat digunakan sebagai bidang dalam klausa sort.
Jika bidang bertipe LITERAL ditentukan dalam klausa sort, sistem akan mengurutkan huruf secara alfabetis, angka dalam urutan turun, dan karakter Cina berdasarkan nilai ASCII mereka.
Dalam kebanyakan kasus, klausa sort tidak mendukung bidang bertipe ARRAY.
Jika klausa sort berisi beberapa aturan pengurutan, seperti sort=-field1;-field2;-field3, performa pengurutan bervariasi tergantung pada data di setiap bidang yang ditentukan. Untuk memastikan performa pengurutan yang stabil, disarankan untuk menentukan RANK sebagai aturan pengurutan. Sebagai contoh, ekspresi sort halus dapat berupa normalize(field1)*100+normalize(field2)*10+normalize(field3)+first_phase_score*10000, di mana first_phase_score menentukan skor yang dihitung oleh ekspresi sort kasar. Untuk informasi lebih lanjut, lihat Fungsi sort halus.
Fungsi fungsionalitas yang didukung
distance: Mengembalikan jarak bola antara dua titik. Fungsi ini biasanya digunakan dalam perhitungan jarak untuk layanan berbasis lokasi (LBS).
Contoh:
Query berikut menunjukkan bahwa seorang pengguna mencari restoran. Fungsi distance digunakan untuk mengurutkan hasil query berdasarkan jarak dalam urutan naik:
query=default:'Nama Restoran'&&sort=+distance(lon,lat,"120.34256","30.56982")tag_match: Mencocokkan kata kunci dalam query pencarian dengan tag dokumen dan menghasilkan skor berdasarkan bobot tag yang cocok. Untuk detail lebih lanjut tentang fungsi ini, klik tautan di atas.
Contoh:
sort=-tag_match("user_options", options, "mul", "sum", "false", "true", 100).
Contoh
Query dokumen dalam aplikasi yang mengandung "Universitas Zhejiang" dan urutkan hasilnya berdasarkan tipe dalam urutan naik. Jika tipe dari beberapa dokumen sama, urutkan dokumen berdasarkan relevansi teks. Untuk informasi lebih lanjut, lihat Konfigurasikan ekspresi sort.
query=default:'Universitas Zhejiang'&&sort=+type;-RANK // Ekspresi sort halus dapat berisi text_relevance(field).Query dokumen dalam aplikasi yang mengandung "Universitas Zhejiang" dan urutkan hasilnya berdasarkan jumlah hits dan komentar dalam urutan turun:
query=default:'Universitas Zhejiang'&&sort=-(hits+comments)