Klausul RANK BY
Hasil dari kueri mencakup baris yang dikembalikan oleh kueri dan nilai peringkat untuk setiap baris jika kolom peringkat disertakan dalam klausa SELECT. Nilai peringkat dihitung oleh mesin Pencari dan dikembalikan sebagai bilangan bulat dalam rentang nol hingga 1000. Untuk membuat hasil peringkat lebih bermakna, kueri dapat mengontrol bagaimana nilai peringkat mentah dihitung dalam klausa RANK BY.
Topik ini diatur sebagai berikut:
Klausul RANK BY
Sintaks untuk klausa RANK BY adalah sebagai berikut:
WHERE ( <search_condition> )
RANK BY [ ( ] <rank_specification> [ ) ]
Klausa RANK BY diterapkan ke search_condition segera mendahuluinya, secara efektif menentukan peringkat baris yang lebih rendah atau lebih tinggi yang dikembalikan oleh kondisi pencarian tersebut daripada baris yang dikembalikan oleh kondisi pencarian lain. Tanda kurung di sekitar search_condition diperlukan. Tanda kurung yang mengelilingi spesifikasi peringkat bersifat opsional.
Lebih dari satu klausa RANK BY dapat diterapkan ke satu kondisi. Anda dapat menyertakan klausa RANK BY tambahan satu demi satu menggunakan tanda kurung.
Catatan
Predikat teks lengkap mengembalikan nilai peringkat dalam rentang 0 hingga 1000. Nilai peringkat untuk semua dokumen yang cocok dengan predikat teks non-penuh adalah 1000. Modifikasi pada nilai peringkat harus mempertimbangkan informasi ini.
Bagian rank_specification dari klausa RANKBY mengidentifikasi satu atau beberapa fungsi untuk diterapkan ke nilai peringkat. Fungsi WEIGHT menerapkan pengali ke nilai peringkat mentah untuk baris yang dikembalikan. Semakin kecil pengali, semakin rendah nilai peringkat yang dihasilkan. Fungsi COERCION dapat digunakan untuk mengalikan, menambahkan, atau mengatur nilai peringkat tertentu untuk baris yang dikembalikan. Setiap spesifikasi peringkat dapat mencakup nol atau satu fungsi WEIGHT dan nol atau lebih fungsi COERCION. Jika fungsi WEIGHT dan COERCION disertakan dalam klausa RANK BY, fungsi WEIGHT harus terlebih dahulu.
Fungsi WEIGHT
Sintaks fungsi WEIGHT adalah:
WEIGHT ( <weight_multipler> )
Pengali harus desimal dari 0,001 hingga 1,000. Nilai peringkat mentah yang dikembalikan oleh predikat kondisi pencarian dikalikan dengan pengali berat untuk menetapkan nilai peringkat baru.
Dalam contoh berikut, fungsi WEIGHT memberikan dokumen dengan kata "Theresa" di bidang System.Document.LastAuthor setengah nilai peringkat dokumen dengan "Theresa" di bidang System.Author:
WHERE CONTAINS ( System.Author,'"Theresa"' )
RANK BY WEIGHT ( 1.000 )
OR
CONTAINS ( System.Document.LastAuthor,'"Theresa"' )
RANK BY WEIGHT ( 0.500 )
Catatan
Fitur pembobotan kolom predikat CONTAINS dan FREETEXT mendukung format singkat menggunakan titik dua antara istilah pencarian dan pengali ("perangkat lunak":0.25). Klausa RANK BY tidak mendukung formulir yang dipersingkat.
Ada batasan saat menggunakan RANK BY WEIGHT: tidak berfungsi dengan klausa CONTAINS yang menggunakan kondisi Boolean; misalnya, contoh berikut tidak diizinkan:
CONTAINS ( System.Author,'"Theresa" OR "Teresa"' ) RANK BY WEIGHT ( 0.400 )
Fungsi COERCION
Fungsi koersi peringkat dapat digunakan untuk mengubah nilai peringkat yang dikembalikan dengan penambahan atau perkalian atau dengan menetapkannya nilai tertentu.
Sintaks fungsi COERCION adalah:
COERCION ( <coercion_operation> , <coercion_value> )
Nilai koersi adalah nilai bilangan bulat.
Tabel berikut ini menjelaskan pengaturan operasi koersi yang tersedia.
Operasi koersi | Deskripsi | Rentang Nilai |
---|---|---|
MUTLAK | Nilai peringkat yang dikembalikan adalah nilai yang ditentukan dalam nilai koersi. | 0 hingga 1000 |
ADD | Nilai peringkat yang dikembalikan adalah jumlah nilai peringkat mentah dan nilai koersi yang ditentukan. | 0.001 hingga 1.0 |
KALIKAN | Nilai peringkat yang dikembalikan adalah produk dari nilai peringkat mentah dan nilai koersi yang ditentukan. | 0.001 hingga 1.0 |
Penting
Pencarian hanya dapat mengembalikan nilai peringkat dalam rentang 0 hingga 1000.
Contoh berikut menggunakan fungsi COERCION untuk mengatur semua dokumen dengan "komputer" dalam judul agar memiliki peringkat 1000, sekaligus mengurangi dengan seperempat peringkat dokumen yang berisi "komputer" dan "perangkat lunak" dalam judul.
WHERE CONTAINS ( System.Title, 'computer' )
RANK BY COERCION ( ABSOLUTE , 1000 )
OR
CONTAINS ( System.Title, '"computer" AND "software"' )
RANK BY COERCION ( MULTIPLY, 0.750 )