Saat Anda memanggil search()
menggunakan string kueri
saja, hasilnya dikembalikan 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
class Query
sebagai argumen untuk
search()
untuk mengubah opsi ini.
Struct Query class memungkinkan Anda menentukan jumlah dokumen yang akan ditampilkan sekaligus. Selain itu, Anda juga dapat menyesuaikan konten dokumen yang diambil. Anda dapat meminta ID dokumen saja, atau meminta agar dokumen hanya berisi subset kolomnya. Anda juga dapat membuat kolom kustom di: cuplikan (fragmen kolom teks yang menunjukkan teks yang mengelilingi string yang cocok), dan ekspresi kolom (kolom dengan nilai yang berasal dari kolom lain dalam dokumen).
Selain opsi kueri,
class Kueri juga dapat menyertakan instance SortOptions
class. Dengan opsi pengurutan, Anda dapat mengubah tata urutan, dan
mengurutkan hasil dengan beberapa kunci.
Menelusuri dengan class Query
Saat melakukan penelusuran dengan instance class Kueri, Anda harus membuat instance class dalam beberapa langkah. Berikut ini urutan umumnya:
- Buat string kueri.
- Buat
SortOptions
jika perlu. - Buat
QueryOptions
. - Buat objek Kueri yang menyertakan string kueri dan
QueryOptions
(opsional). - Panggil metode penelusuran pada objek Query.
Konstruktor QueryOptions
dan SortOptions
menggunakan argumen bernama, seperti ditunjukkan
dalam contoh berikut:
QueryOptions
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
number_found_accuracy
|
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 dan keluar dari kueri berturut-turut, sehingga setiap penelusuran baru dilanjutkan dari akhir penelusuran sebelumnya. Kursor dan offset dibahas di halaman Menangani Hasil . | Null. Hasil akan berisi semua dokumen yang cocok (hingga batas). | - |
sort_options
|
Tetapkan SortOptions object 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 |
---|---|---|
ids_only
|
Tetapkan ke
True
atau
False
. Jika
True
, dokumen yang ditampilkan dalam hasil hanya akan berisi ID, tanpa kolom. |
False
(menampilkan semua kolom). |
returned_fields
|
Menentukan kolom dokumen yang akan disertakan dalam hasil. Maksimal 100 kolom dapat ditentukan. | Tampilkan semua kolom dokumen (hingga 100 kolom). |
returned_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 |
snippeted_fields
|
Daftar nama kolom teks. Cuplikan dibuat untuk setiap kolom. Ini adalah kolom komputasi yang ditambahkan ke properti ekspresi dari dokumen di hasil penelusuran. Kolom cuplikan memiliki nama yang sama dengan kolom sumbernya. Opsi ini secara implisit menggunakan fungsi cuplikan hanya dengan dua argumen, yang membuat cuplikan dengan maksimal satu string yang cocok, berdasarkan string kueri yang sama dengan yang digunakan penelusuran untuk mengambil hasil: snippet("query-string", field-name) .Anda juga dapat membuat cuplikan yang disesuaikan dengan opsi returned_expressions
dengan menambahkan ekspresi kolom yang secara eksplisit memanggil fungsi cuplikan. |
Tidak ada |
SortOptions
Properti SortOptions
mengontrol pengurutan dan penskoran hasil penelusuran.
Properti | Deskripsi | Default |
---|---|---|
expressions
|
Daftar SortExpressions yang merepresentasikan jenis Dokumen multi-dimensi. |
Tidak ada |
match_scorer
|
Objek
MatchScorer
. Jika ada, atribut 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 |
batas | 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.
Perhatikan bahwa istilah 'ekspresi' digunakan dengan beberapa arti saat berbicara tentang opsi pengurutan: SortOption
sendiri memiliki atribut ekspresi. Atribut ini adalah daftar objek SortExpression
yang sesuai dengan kunci pengurutan. Terakhir, setiap objek SortExpression
berisi atribut ekspresi yang menentukan cara menghitung nilai kunci pengurutan. 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 | |
---|---|---|---|
expression
|
Ekspresi yang akan dievaluasi saat mengurutkan hasil untuk setiap dokumen yang cocok. | Tidak ada | |
direction
|
Arah untuk mengurutkan hasil penelusuran, baik ASCENDING atau DESCENDING . |
||
default_value
|
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 ditentukan oleh, SortOptions.limit
,, penelusuran hanya akan mengambil, mengurutkan, dan menampilkan angka terbatas tersebut. Opsi 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 mencoba memastikan bahwa kueri tidak akan menampilkan lebih banyak dokumen daripada yang dapat Anda urutkan.
Menulis ekspresi
Ekspresi digunakan untuk menentukan ekspresi kolom (yang ditetapkan dalam
QueryOptions
) 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 objek
MatchScorer
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
angka, nama field, atau ekspresi
menggunakan angka dan nama field.
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.