All Products
Search
Document Center

OpenSearch:Fungsi pengurutan kasar

Last Updated:Apr 25, 2026

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

  1. Sintaks: static_bm25()

  2. Parameter: Tidak ada.

  3. Nilai kembalian: Nilai float dalam rentang [0.0, 1.0].

  4. Skenario: Gunakan fungsi ini dalam ekspresi rough sort untuk memasukkan skor relevansi teks statis. Contohnya: static_bm25().

  5. Catatan:

    • Fungsi static_bm25() diaktifkan secara default dalam konfigurasi rough sort default.

Catatan

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

  1. Sintaks: exact_match_boost()

  2. Parameter: Tidak ada.

  3. Nilai kembalian: Bilangan bulat dalam rentang [0, 99].

  4. 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().

  5. 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_boost mendukung parameter opsional sum dan max.

timeliness: Hitung skor ketepatan waktu

  1. Sintaks: timeliness(pubtime)

  2. Parameter: pubtime: Bidang yang dievaluasi. Harus berupa bilangan bulat yang merepresentasikan Unix timestamp dalam satuan detik.

  3. 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.

  4. Skenario: Untuk mempertimbangkan kebaruan dokumen berdasarkan bidang create_timestamp, gunakan ekspresi: timeliness(create_timestamp).

  5. Catatan:

    • Bidang pubtime harus dikonfigurasi sebagai bidang atribut.

timeliness_ms: Hitung skor ketepatan waktu

  1. Sintaks: timeliness_ms(pubtime)

  2. Parameter: pubtime: Bidang yang dievaluasi. Harus berupa bilangan bulat yang merepresentasikan Unix timestamp dalam satuan milidetik.

  3. 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.

  4. Skenario: Untuk mempertimbangkan kebaruan dokumen berdasarkan bidang create_timestamp, gunakan ekspresi: timeliness_ms(create_timestamp).

  5. Catatan:

    • Bidang pubtime harus dikonfigurasi sebagai bidang atribut.

normalize: Normalisasi nilai numerik

  1. 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 normalize menyediakan 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 parameter value), normalisasi logaritmik (dengan value dan max), serta normalisasi linear (dengan value, max, dan min).

  2. Sintaks: normalize(value, max, min)

  3. Parameter:

  4. Nilai kembalian: Nilai double dalam rentang [0.0, 1.0].

  5. Skenario 1: Untuk menormalisasi bidang price ketika rentang nilainya tidak diketahui, gunakan: normalize(price).

    Skenario 2: Untuk menormalisasi bidang price ketika hanya nilai maksimumnya (misalnya, 100) yang diketahui, gunakan: normalize(price, 100).

    Skenario 3: Untuk menormalisasi bidang price ketika nilai maksimum (100) dan minimum (1) keduanya diketahui, gunakan: normalize(price, 100, 1).

    Skenario 4: Untuk menormalisasi hasil fungsi distance ke rentang [0.0, 1.0], gunakan: normalize(distance(longitude_in_doc, latitude_in_doc, longitude_in_query, latitude_in_query)).

  6. Catatan:

    • Bidang yang digunakan sebagai parameter harus dikonfigurasi sebagai bidang atribut.

    • Untuk normalisasi arctangent, jika value kurang dari 0, fungsi mengembalikan 0.0.

    • Untuk normalisasi logaritmik, nilai max harus lebih besar dari 1.0.

    • Untuk normalisasi linear, nilai max harus lebih besar dari nilai min.

category_score: Fungsi prediksi kategori

Deskripsi: Fungsi ini mengembalikan skor yang menunjukkan seberapa baik kategori dokumen sesuai dengan kategori yang diprediksi oleh kueri.

  1. Sintaks:

    category_score(cate_id)

  2. Parameter:

    cate_id: Bidang yang digunakan sebagai ID kategori selama pelatihan model. Harus berupa bilangan bulat.

  3. Nilai kembalian: Bilangan bulat dalam rentang [0, 2].

  4. Skenario: Gunakan category_score(cate_id) dalam ekspresi pengurutan. Untuk informasi lebih lanjut, lihat Gunakan fitur prediksi kategori.

  5. Catatan: