Pengurutan kasar adalah proses memilih N dokumen berkualitas tinggi teratas dari semua dokumen yang diambil. Dokumen-dokumen tersebut kemudian dinilai dan diurutkan dalam proses pengurutan halus. Dengan cara ini, pengguna dapat memperoleh dokumen yang paling sesuai dengan kebutuhan mereka. Pengurutan kasar memengaruhi performa pencarian, sedangkan pengurutan halus memengaruhi hasil akhir. Oleh karena itu, Anda dapat menggunakan faktor-faktor utama dari pengurutan halus untuk mengurutkan dokumen secara kasar dengan cara yang efisien dan sederhana. Ekspresi pengurutan dapat digunakan baik untuk pengurutan kasar maupun halus. Topik ini menjelaskan fungsi fitur yang digunakan untuk pengurutan kasar.
Fungsi fitur
static_bm25(): mengembalikan relevansi teks statis yang menunjukkan tingkat kecocokan antara kueri dan dokumen
Sintaks: static_bm25()
Parameter: Tidak ada
Nilai Pengembalian: Nilai pengembalian bertipe FLOAT. Rentang nilai valid adalah 0 hingga 1.
Skenario 1: Fungsi static_bm25() dapat digunakan dalam ekspresi pengurutan kasar untuk menghitung skor teks.
Catatan Penggunaan:
Secara default, static_bm25() berlaku jika Anda menggunakan ekspresi pengurutan kasar default.
Jika Anda telah mengonfigurasi analisis kueri untuk kueri, skor static_bm25() dapat melebihi 1. Contoh:
Sinonim dikonfigurasikan untuk klausa kueri default query=index: '苹果'. Lalu, klausa kueri berubah menjadi query=index: '苹果' OR index:'apple'. Dalam hal ini, jika dokumen berisi 苹果 dan apple, skor static_bm25() diakumulasikan, dan skor pengurutan kasar akhir lebih besar dari 1.
exact_match_boost(): menghitung bobot maksimum dari istilah tertentu dalam kueri
Sintaks: exact_match_boost()
Parameter: Tidak ada
Nilai Pengembalian: Nilai pengembalian bertipe INT. Rentang nilai valid adalah 0 hingga 99.
Skenario: Klausa kueri adalah query=default:'开放搜索'^60 OR default:'opensearch'^50. Anda ingin mengurutkan hasil berdasarkan bobot boost yang ditentukan dalam klausa kueri untuk istilah yang cocok. Misalnya, Dokumen A berisi istilah 开放搜索, dan Dokumen B berisi istilah opensearch. Dalam hal ini, Dokumen A memiliki peringkat lebih tinggi daripada Dokumen B. Ekspresi pengurutan kasar adalah exact_match_boost().
Catatan Penggunaan:
Bidang yang dirujuk dalam parameter fungsi ini harus dikonfigurasi sebagai bidang indeks.
Bobot boost default untuk istilah yang tidak ditentukan bobot boostnya dalam klausa kueri adalah 99.
Jika fungsi exact_match_boost() digunakan dalam ekspresi pengurutan kasar untuk aplikasi eksklusif, Anda dapat menentukan bidang sum atau max.

timeliness: mengembalikan skor timeliness yang menunjukkan seberapa baru dokumennya
Sintaks: timeliness(pubtime), timeliness
pubtime: Bidang yang timeliness-nya akan dievaluasi. Nilai bidang harus bertipe INT dalam satuan detik.
Nilai Pengembalian: Nilai pengembalian bertipe FLOAT. Rentang nilai valid adalah 0 hingga 1. Nilai yang lebih besar menunjukkan timeliness yang lebih baik. Jika nilai bidang lebih lambat dari waktu saat ini, 0 dikembalikan.
Skenario: Fungsi timeliness(create_timestamp) dapat digunakan dalam ekspresi pengurutan kasar untuk menghitung skor timeliness dari bidang create_timestamp.
Catatan Penggunaan:
Bidang pubtime harus dikonfigurasi sebagai bidang atribut.
timeliness_ms: mengembalikan skor timeliness yang menunjukkan seberapa baru dokumennya
Sintaks: timeliness_ms(pubtime), timeliness_ms
pubtime: Bidang yang timeliness-nya akan dievaluasi. Nilai bidang harus bertipe INT dalam satuan milidetik.
Nilai Pengembalian: Nilai pengembalian bertipe FLOAT. Rentang nilai valid adalah 0 hingga 1. Nilai yang lebih besar menunjukkan timeliness yang lebih baik. Jika nilai bidang lebih lambat dari waktu saat ini, 0 dikembalikan.
Skenario: Fungsi timeliness_ms(create_timestamp) dapat digunakan dalam ekspresi pengurutan kasar untuk menghitung skor timeliness dari bidang create_timestamp.
Catatan Penggunaan:
Bidang pubtime harus dikonfigurasi sebagai bidang atribut.
normalize: menormalkan skor dalam rentang nilai berbeda menjadi nilai numerik dalam rentang dari 0 hingga 1
Ikhtisar Skenario: Relevansi dokumen dihitung dari dimensi yang berbeda. Skor yang dihitung dari dimensi yang berbeda mungkin berada dalam rentang nilai yang berbeda. Misalnya, sebuah halaman web bisa memiliki jutaan klik sementara skor relevansi teks halaman web tersebut adalah nilai dari 0 hingga 1. Anda tidak dapat membandingkan nilai-nilai tersebut dalam rentang nilai yang berbeda. Fungsi normalize dapat menormalkan skor dalam rentang nilai yang berbeda menjadi skor dalam rentang nilai yang sama. Dengan cara ini, Anda dapat menggunakan skor yang dinormalisasi untuk perhitungan lebih lanjut. Fungsi normalize mendukung tiga metode normalisasi: normalisasi linier, normalisasi logaritmik, dan normalisasi arctangent. Fungsi ini secara otomatis memilih metode normalisasi berdasarkan parameter input. Jika hanya parameter value yang disetel, fungsi normalize menggunakan fungsi arctangent untuk normalisasi. Jika parameter value dan max disetel, fungsi normalize menggunakan fungsi logaritmik untuk normalisasi. Jika semua parameter value, max, dan min disetel, fungsi normalize menggunakan fungsi linier untuk normalisasi.
Sintaks: normalize(value, max, min), normalize
value: Bidang dalam dokumen atau ekspresi yang nilainya atau nilai pengembaliannya ingin dinormalisasi. Nilai bidang atau nilai pengembalian harus bertipe DOUBLE. max: Nilai maksimum dari rentang nilai setelah normalisasi. Parameter ini opsional. Nilai maksimum harus bertipe DOUBLE. min: Nilai minimum dari rentang nilai setelah normalisasi. Parameter ini opsional. Nilai minimum harus bertipe DOUBLE.
Nilai Pengembalian: Nilai pengembalian bertipe DOUBLE. Rentang nilai valid adalah 0 hingga 1.
Skenario 1: Anda ingin menormalkan nilai bidang price tetapi tidak mengetahui rentang nilai dari bidang price. Dalam hal ini, Anda dapat menggunakan fungsi normalize dalam format berikut: normalize(price).
Skenario 2: Anda ingin menormalkan nilai bidang price dan hanya mengetahui nilai maksimum 100 dalam rentang nilai bidang price. Dalam hal ini, Anda dapat menggunakan fungsi normalize dalam format berikut: normalize(price, 100)
Skenario 3: Anda ingin menormalkan nilai bidang price dan menetapkan nilai maksimum menjadi 100 dan nilai minimum menjadi 1. Dalam hal ini, Anda dapat menggunakan fungsi normalize dalam format berikut: normalize(price, 100, 1)
Skenario 4: Anda ingin menormalkan nilai pengembalian fungsi distance menjadi nilai dari 0 hingga 1. Dalam hal ini, Anda dapat menggunakan fungsi normalize dalam format berikut: normalize(distance(longitude_in_doc, latitude_in_doc, longtitude_in_query, latitude_in_query))
Catatan Penggunaan:
Bidang yang dirujuk dalam fungsi harus disetel sebagai bidang atribut.
Jika fungsi arctangent digunakan untuk normalisasi dan nilai bidang atau nilai pengembalian ekspresi yang ditentukan lebih kecil dari 0, nilai pengembalian fungsi normalize adalah 0.
Jika fungsi logaritmik digunakan untuk normalisasi, nilai parameter max harus lebih besar dari 1.
Jika fungsi linier digunakan untuk normalisasi, nilai parameter max harus lebih besar dari nilai parameter min.