Klausa 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 Pencarian 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:

Klausa RANK BY

Sintaks untuk klausul 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 yang lebih rendah atau lebih tinggi untuk baris 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.

Nota

Predikat teks lengkap mengembalikan nilai peringkat dalam rentang 0 hingga 1000. Nilai peringkat untuk semua dokumen yang cocok dengan predikat non-teks lengkap adalah 1000. Modifikasi pada nilai peringkat harus memperhitungkan 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 klausul 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 ) 

 

Nota

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: ini 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 pemakaian Deskripsi Rentang nilai
MUTLAK Nilai peringkat yang dikembalikan adalah nilai yang ditentukan dalam nilai koersi. 0 hingga 1000
TAMBAH Nilai peringkat yang dikembalikan adalah jumlah nilai peringkat mentah dan nilai koersi yang ditentukan. 0 hingga 1000
KALIKAN Nilai peringkat yang dikembalikan adalah produk dari nilai peringkat mentah dan nilai koersi yang ditentukan. 0 hingga 1000
MINMAX Nilai peringkat yang dikembalikan adalah pemetaan linier dari skor peringkat 0-1000 dari item yang cocok dari CONTAINS atau CONTAINSSEMANTIC antara nilai koersi minimum dan maksimum yang ditentukan. 0 hingga 1000

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 untuk memiliki peringkat 1000, sambil 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 ) 

Contoh berikut menggunakan fungsi COERCION untuk memetakan peringkat mentah dokumen dengan istilah "komputer" ke rentang antara 500 hingga 800 berdasarkan kecocokan semantiknya.

WHERE CONTAINSSEMANTIC('text', *, 'computer', 1033)
OR CONTAINSSEMANTIC('image', *, 'computer', 1033)
RANK BY COERCION(MINMAX, 500, 800)
ORDER BY System.Search.Rank DESC

 

Merge(<merge_operation>)

Digunakan dengan klausul RANK BY untuk mengagregasi peringkat dari semua hasil untuk menghasilkan daftar peringkat akhir hasil penggabungan.

Sintaks untuk fungsi MERGE adalah sebagai berikut:

RANK BY MERGE ( <merge_operation>) 

Gabungkan operasi

Tabel berikut menjelaskan operasi yang didukung untuk parameter merge_operation .

Operasi penggabungan Deskripsi
CONVEXCOMBINATION Algoritma penggabungan ini harus digunakan secara eksklusif ketika kueri menyertakan klausul berikut: CONTAINS (pencarian leksikal), CONTAINSSEMANTIC('Text',...), dan CONTAINSSEMANTIC('Image'...) (pencarian semantik di seluruh teks dan gambar). Ini menggabungkan skor dari ketiga klausul ini menggunakan pendekatan jumlah tertimbang, memberikan prioritas yang lebih tinggi untuk skor leksikal dengan menetapkan bobot yang lebih besar jika dibandingkan dengan skor semantik. Peringkat akhir akan antara 0 dan 1000.
MIN Algoritma penggabungan ini adalah perilaku default dalam kasus kursor AND. Ini memilih peringkat minimum dari semua hasil.
MAX Algoritma penggabungan ini adalah perilaku default dalam kasus kursor OR. Ini memilih peringkat maksimum dari semua hasil.

Nota

Menggunakan RANK BY MERGE(MIN) dengan kursor OR atau RANK BY MERGE(MAX) dengan kursor AND tidak akan menghasilkan hasil yang diharapkan. Disarankan untuk secara eksplisit menggunakan fungsi MERGE dengan klausul RANK BY hanya bersama dengan operator CONVEXCOMBINATION saat menggabungkan hasil pencarian leksikal dan semantik ke dalam satu tataan hasil.

Example

Contoh berikut menunjukkan penggunaan fungsi MERGE untuk mencari item secara leksikal dan semantik yang cocok dengan kata "komputer" di bidang "Gambar" atau "Teks". Hasil pencarian kemudian diberi peringkat menggunakan operator RANK BY MERGE yang menggabungkan skor dari semua hasil untuk menghasilkan daftar peringkat akhir.

WHERE (CONTAINS(*,'computer', 1033)  
OR CONTAINSSEMANTIC('Image', *, 'computer', 1033)  
OR CONTAINSSEMANTIC('Text', System.ItemNameDisplay, 'computer', 1033)  
OR CONTAINSSEMANTIC('Text', *, 'computer', 1033))  
RANK BY MERGE(CONVEXCOMBINATION) 

Untuk informasi selengkapnya tentang predikat CONTAINSSEMANTIC, lihat predikat CONTAINSSEMANTIC.