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