Kueri dan Opsi Pengurutan

Saat Anda memanggil metode Index.Search hanya dengan string kueri, hasilnya akan ditampilkan sesuai dengan opsi kueri default:

  • Dokumen ditampilkan dengan urutan menurun
  • Dokumen ditampilkan dalam kelompok yang terdiri dari 20 dokumen sekaligus
  • Dokumen yang diambil berisi semua kolom aslinya

Anda dapat menggunakan instance struct SearchOptions sebagai argumen untuk Search untuk mengubah pilihan ini.

Dengan struct SearchOptions, Anda dapat menentukan jumlah dokumen yang ditampilkan sekaligus. Selain itu, Anda juga dapat menyesuaikan konten pada dokumen yang diambil. Anda dapat meminta ID dokumen saja, atau meminta agar dokumen hanya berisi subset kolomnya. Anda juga dapat membuat kolom kustom dalam dokumen yang diambil menggunakan ekspresi kolom (kolom dengan nilai yang berasal dari kolom lain dalam dokumen).

Selain opsi kueri, struct `SearchOptions` juga dapat menyertakan instance struct SortOptions. Dengan opsi pengurutan, Anda dapat mengubah tata urutan dan mengurutkan hasil dengan beberapa kunci.

SearchOptions

Properti ini mengontrol berapa banyak hasil yang ditampilkan dan urutannya. Opsi offset dan kursor, yang sama-sama eksklusif, mendukung penomoran halaman. Kolom ini menentukan dokumen terpilih mana yang akan ditampilkan dalam hasil.

Properti Deskripsi Default Maksimum
Limit Jumlah dokumen maksimum yang akan ditampilkan dalam hasil. 20 1.000
Offset Offset dokumen pertama dalam hasil yang ditampilkan. 0. Hasil akan berisi semua dokumen yang cocok (hingga batas). 1.000
Cursor Kursor dapat digunakan sebagai pengganti offset untuk mengambil kelompok dokumen secara urut. Kursor diperbarui saat diteruskan ke dalam dan keluar dari kueri berturut-turut, sehingga setiap penelusuran baru akan dilanjutkan dari akhir penelusuran sebelumnya. Kursor dan offset dibahas di halaman Referensi penelusuran Go. Null. Hasil akan berisi semua dokumen yang cocok (hingga batas). -
Sort Tetapkan struct SortOptions untuk mengontrol urutan hasil penelusuran. Instance SortOptions memiliki kumpulan propertinya sendiri yang dijelaskan di bawah. Null. Urutkan dengan menurunkan peringkat dokumen. -

Properti ini mengontrol kolom dokumen yang muncul dalam hasil.

Properti Deskripsi Default
IDsOnly Tetapkan ke true atau false. Jika true, dokumen yang ditampilkan dalam hasil hanya akan berisi ID, tanpa kolom. false (menampilkan semua kolom).
Fields Menentukan kolom dokumen yang akan disertakan dalam hasil. Maksimal 100 kolom dapat ditentukan. Tampilkan semua kolom dokumen (hingga 100 kolom).
Expressions Ekspresi kolom yang menjelaskan kolom komputasi yang ditambahkan ke setiap dokumen yang ditampilkan di hasil penelusuran. Kolom ini ditambahkan ke properti ekspresi dokumen. Nilai kolom ditentukan dengan menulis ekspresi yang dapat mencakup satu atau beberapa kolom dokumen. Tidak ada

SortOptions

Properti SortOptions mengontrol pengurutan dan penskoran hasil penelusuran.

Properti Deskripsi Default
Expressions Bagian SortExpressions yang merepresentasikan jenis Dokumen multi-dimensi. Tidak ada
Scorer Opsional Scorer. Jika ada, objek ini akan menyebabkan dokumen diberi skor sesuai dengan frekuensi istilah penelusuran. Skor akan tersedia sebagai kolom _score. Penskoran dokumen mungkin saja mahal (baik dalam operasi yang ditagih maupun waktu eksekusi) dan dapat memperlambat penelusuran Anda. Gunakan penskoran seperlunya. Tidak ada
Limit Jumlah maksimum objek yang akan dinilai dan/atau diurutkan. Tidak boleh lebih dari 10.000. 1.000

Mengurutkan pada beberapa kunci

Anda dapat mengurutkan hasil penelusuran di beberapa kunci pengurutan. Setiap kunci dapat berupa nama kolom sederhana, atau nilai yang dihitung dari beberapa kolom. Ekspresi ini dibuat sesuai dengan aturan di bagian berikutnya.

SortExpression juga menentukan arah pengurutan dan nilai kunci default yang akan digunakan jika ekspresi tidak dapat dihitung untuk sebuah dokumen. Berikut daftar lengkap properti:

Properti Deskripsi Default
Expr Ekspresi yang akan dievaluasi saat mengurutkan hasil untuk setiap dokumen yang cocok. Tidak ada
Reverse Jika true membalik urutan hasil penelusuran agar muncul dalam urutan menaik (bukan dalam urutan default menurun). false
Default Nilai default ekspresi, jika tidak ada kolom dan tidak dapat dihitung untuk dokumen. Nilai teks harus ditentukan untuk pengurutan teks. Nilai numerik harus ditetapkan untuk urutan numerik. Tidak ada

Mengurutkan di kolom multinilai

Saat Anda mengurutkan di kolom multinilai dari jenis tertentu, hanya nilai pertama yang ditetapkan ke kolom tersebut yang digunakan. Misalnya, pertimbangkan dua dokumen, DocA dan DocB yang keduanya memiliki kolom teks bernama "color". Dua nilai ditetapkan untuk kolom "color" DocA dalam urutan (red, blue), dan dua nilai untuk DocB dalam urutan (green, red). Saat Anda melakukan pengurutan yang menentukan kolom teks "color", DocA diurutkan pada nilai "red" dan DocB pada nilai "green". Nilai kolom lainnya tidak digunakan dalam pengurutan.

Mengurutkan atau tidak mengurutkan

Jika Anda tidak menentukan opsi pengurutan apa pun, hasil penelusuran akan otomatis ditampilkan berdasarkan peringkat menurun. Tidak ada batasan jumlah dokumen yang ditampilkan dalam kasus ini. Jika Anda menentukan opsi pengurutan, pengurutan akan dilakukan setelah semua dokumen yang cocok dipilih. Ada properti eksplisit, SortOptions.Limit, yang mengontrol ukuran pengurutan. Anda tidak pernah bisa mengurutkan lebih dari 10.000 dokumen, defaultnya adalah 1.000. Jika ada lebih banyak dokumen yang cocok daripada jumlah yang ditetapkan oleh SortOptions.Limit, penelusuran hanya akan mengambil, mengurutkan, dan menampilkan angka terbatas tersebut. Properti ini memilih dokumen untuk diurutkan dari daftar semua dokumen yang cocok, dalam urutan peringkat menurun. Ada kemungkinan bahwa kueri akan memilih lebih banyak dokumen yang cocok daripada yang dapat Anda urutkan. Jika menggunakan opsi pengurutan dan penting untuk mengambil setiap dokumen yang cocok, Anda harus memastikan bahwa kueri tidak akan menampilkan lebih banyak dokumen daripada yang bisa Anda urutkan.

Menulis ekspresi

Ekspresi digunakan untuk menentukan ekspresi kolom (yang ditetapkan dalam SearchOptions) dan ekspresi pengurutan, yang ditetapkan dalam SortOptions. Fungsi tersebut ditulis sebagai string:

"price * quantity"
"(men + women)/2"
"min(daily_use, 10) * rate"
"snippet('rose', flower, 120)"

Ekspresi yang melibatkan kolom Angka dapat menggunakan operator aritmatika (+, -, *, /) dan fungsi numerik bawaan yang tercantum di bawah. Ekspresi yang melibatkan kolom geopoint dapat menggunakan fungsi geopoint dan jarak. Ekspresi untuk kolom Teks dan HTML dapat menggunakan fungsi cuplikan.

Ekspresi juga dapat mencakup istilah khusus berikut:

Masa Berlaku Deskripsi
_rank Properti peringkat dokumen. Ini dapat digunakan dalam ekspresi kolom dan ekspresi pengurutan.
_score Skor yang ditetapkan ke dokumen saat Anda menyertakan Scorer di SortOptions. Istilah ini hanya dapat muncul dalam ekspresi pengurutan; tidak dapat digunakan dalam ekspresi kolom.

Fungsi numerik

Ekspresi untuk menentukan nilai numerik untuk FieldExpressions dan SortExpressions dapat menggunakan fungsi bawaan ini. Argumen harus berupa angka, nama kolom, atau ekspresi yang menggunakan angka dan nama kolom.

Fungsi Deskripsi Contoh
max Menampilkan argumen terbesarnya. max(recommended_retail_price, discount_price, wholesale_price)
min Menampilkan argumen terkecil darinya. min(height, width, length)
log Menampilkan logaritma natural. log(x)
abs Menampilkan nilai absolut. abs(x)
pow Dibutuhkan dua argumen numerik. Panggilan pow(x, y) menghitung nilai x yang dipangkatkan y. pow(x, 2)
count Menggunakan nama kolom sebagai argumennya. Menampilkan jumlah kolom dalam dokumen dengan nama tersebut. Perlu diingat bahwa dokumen dapat berisi beberapa kolom dari berbagai jenis dengan nama yang sama. Catatan: count hanya dapat digunakan di FieldExpressions. Pesan tidak dapat muncul di SortExpressions. count(user)

Fungsi geopoint

Fungsi ini dapat digunakan untuk ekspresi yang melibatkan kolom geopoint.

Fungsi Deskripsi Contoh
geopoint Menentukan geopoint berdasarkan lintang dan bujur. geopoint(-31.3, 151.4)
distance Menghitung jarak antara dua geopoint dalam satuan meter. Perhatikan bahwa salah satu dari kedua argumen tersebut dapat berupa nama kolom geopoint atau pemanggilan fungsi geopoint Namun, hanya satu argumen yang dapat menjadi nama kolom. distance(geopoint(23, 134), store_location)

Cuplikan

Cuplikan adalah fragmen kolom teks yang cocok dengan string kueri dan menyertakan teks di sekitarnya. Cuplikan dibuat dengan memanggil fungsi snippet:

snippet(query, body, [max_chars])

query
String kueri yang dikutip yang menentukan teks yang akan ditemukan di kolom.
body
Nama kolom teks, HTML, atau atom.
max_chars
Jumlah karakter maksimum untuk ditampilkan dalam cuplikan. Argumen ini bersifat opsional; panjang defaultnya adalah 160 karakter.

Fungsi ini menampilkan string HTML. String berisi cuplikan nilai kolom isi, dengan teks yang cocok dengan kueri yang dicetak tebal.