Peringkat pencarian umumnya merupakan proses dua tahap. Tahap pertama, rough sort, dengan cepat menyaring hasil pencarian awal untuk menghasilkan himpunan dokumen berkualitas tinggi yang lebih kecil. Tahap kedua, fine sort, kemudian menerapkan logika penilaian yang lebih kompleks pada himpunan tersebut guna menghasilkan peringkat akhir. Rough sort berdampak signifikan terhadap kinerja pencarian, sedangkan fine sort lebih memengaruhi kualitas peringkat. Oleh karena itu, rough sort harus sederhana dan efisien, hanya menggunakan faktor peringkat paling kritis. Baik rough sort maupun fine sort dikonfigurasi menggunakan ekspresi pengurutan. Topik ini menjelaskan fungsi fitur yang dapat Anda gunakan dalam rough sort.
Fungsi fitur
static_bm25: Hitung relevansi teks statis
-
Sintaks: static_bm25()
-
Parameter: Tidak ada.
-
Nilai kembalian: Nilai float dalam rentang [0.0, 1.0].
-
Skenario: Gunakan fungsi ini dalam ekspresi rough sort untuk memasukkan skor relevansi teks statis. Contohnya:
static_bm25(). -
Catatan:
-
Fungsi
static_bm25()diaktifkan secara default dalam konfigurasi rough sortdefault.
-
Ketika skor static_bm25() dapat melebihi 1.0:
Jika sebuah kueri menggunakan fitur analisis seperti sinonim (misalnya, kueri untuk index:'Apple' diperluas menjadi query=index:'Apple' OR index:'apple'), skor static_bm25() diakumulasikan untuk dokumen yang cocok dengan 'Apple' dan 'apple', sehingga menghasilkan skor rough sort akhir yang lebih besar dari 1.
exact_match_boost: Dapatkan bobot boost maksimum
-
Sintaks: exact_match_boost()
-
Parameter: Tidak ada.
-
Nilai kembalian: Bilangan bulat dalam rentang [0, 99].
-
Skenario: Anda ingin memberi peringkat dokumen berdasarkan bobot boost dari kata kunci yang cocok. Untuk kueri seperti
query=default:'OpenSearch'^60 OR default:'opensearch'^50, dokumen yang berisi "OpenSearch" akan mendapat peringkat lebih tinggi daripada dokumen yang berisi "opensearch". Ekspresi rough sort-nya adalah:exact_match_boost(). -
Catatan:
-
Bidang yang dirujuk dalam kueri harus dikonfigurasi sebagai bidang indeks.
-
Untuk istilah kueri tanpa bobot boost yang ditentukan, nilai boost default-nya adalah 99.
-
Untuk aplikasi eksklusif, saat digunakan dalam rough sort, fungsi
exact_match_boostmendukung parameter opsionalsumdanmax.
-
timeliness: Hitung skor ketepatan waktu
-
Sintaks: timeliness(pubtime)
-
Parameter:
pubtime: Bidang yang dievaluasi. Harus berupa bilangan bulat yang merepresentasikan Unix timestamp dalam satuan detik. -
Nilai kembalian: Nilai float dalam rentang [0.0, 1.0]. Nilai yang lebih tinggi menunjukkan dokumen yang lebih baru. Fungsi ini mengembalikan 0.0 jika timestamp berada di masa depan.
-
Skenario: Untuk mempertimbangkan kebaruan dokumen berdasarkan bidang
create_timestamp, gunakan ekspresi:timeliness(create_timestamp). -
Catatan:
-
Bidang
pubtimeharus dikonfigurasi sebagai bidang atribut.
-
timeliness_ms: Hitung skor ketepatan waktu
-
Sintaks: timeliness_ms(pubtime)
-
Parameter:
pubtime: Bidang yang dievaluasi. Harus berupa bilangan bulat yang merepresentasikan Unix timestamp dalam satuan milidetik. -
Nilai kembalian: Nilai float dalam rentang [0.0, 1.0]. Nilai yang lebih tinggi menunjukkan dokumen yang lebih baru. Fungsi ini mengembalikan 0.0 jika timestamp berada di masa depan.
-
Skenario: Untuk mempertimbangkan kebaruan dokumen berdasarkan bidang
create_timestamp, gunakan ekspresi:timeliness_ms(create_timestamp). -
Catatan:
-
Bidang
pubtimeharus dikonfigurasi sebagai bidang atribut.
-
normalize: Normalisasi nilai numerik
-
Ikhtisar: Dalam perhitungan relevansi, kualitas dokumen diukur melalui berbagai dimensi. Skor dari dimensi-dimensi ini sering kali memiliki rentang nilai yang sangat berbeda. Misalnya, jumlah klik suatu dokumen bisa mencapai jutaan, sedangkan skor relevansi teksnya berada di antara 0.0 hingga 1.0. Nilai-nilai tersebut tidak dapat dibandingkan secara langsung. Untuk menggabungkannya dalam satu rumus, Anda harus menormalisasikannya terlebih dahulu ke skala yang sama. Fungsi
normalizemenyediakan cara sederhana untuk melakukan hal ini. Fungsi ini mendukung tiga metode dan secara otomatis memilih salah satu berdasarkan parameter yang diberikan: normalisasi arctangent (hanya dengan parametervalue), normalisasi logaritmik (denganvaluedanmax), serta normalisasi linear (denganvalue,max, danmin). -
Sintaks: normalize(value, max, min)
-
Parameter:
-
Nilai kembalian: Nilai double dalam rentang [0.0, 1.0].
-
Skenario 1: Untuk menormalisasi bidang
priceketika rentang nilainya tidak diketahui, gunakan:normalize(price).Skenario 2: Untuk menormalisasi bidang
priceketika hanya nilai maksimumnya (misalnya, 100) yang diketahui, gunakan:normalize(price, 100).Skenario 3: Untuk menormalisasi bidang
priceketika nilai maksimum (100) dan minimum (1) keduanya diketahui, gunakan:normalize(price, 100, 1).Skenario 4: Untuk menormalisasi hasil fungsi
distanceke rentang [0.0, 1.0], gunakan:normalize(distance(longitude_in_doc, latitude_in_doc, longitude_in_query, latitude_in_query)). -
Catatan:
-
Bidang yang digunakan sebagai parameter harus dikonfigurasi sebagai bidang atribut.
-
Untuk normalisasi arctangent, jika
valuekurang dari 0, fungsi mengembalikan 0.0. -
Untuk normalisasi logaritmik, nilai
maxharus lebih besar dari 1.0. -
Untuk normalisasi linear, nilai
maxharus lebih besar dari nilaimin.
-
category_score: Fungsi prediksi kategori
Deskripsi: Fungsi ini mengembalikan skor yang menunjukkan seberapa baik kategori dokumen sesuai dengan kategori yang diprediksi oleh kueri.
-
Sintaks:
category_score(cate_id) -
Parameter:
cate_id: Bidang yang digunakan sebagai ID kategori selama pelatihan model. Harus berupa bilangan bulat. -
Nilai kembalian: Bilangan bulat dalam rentang [0, 2].
-
Skenario: Gunakan
category_score(cate_id)dalam ekspresi pengurutan. Untuk informasi lebih lanjut, lihat Gunakan fitur prediksi kategori. -
Catatan:
-
Fungsi ini harus digunakan bersama algoritma category prediction.
-