Saat Anda memanggil metode 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 class Query sebagai argumen untuk search()
guna mengubah opsi ini.
Class Query memungkinkan Anda menentukan jumlah dokumen yang 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 dalam dokumen yang diambil: cuplikan (fragmen kolom teks yang menunjukkan teks yang mengelilingi string yang cocok), dan kolom ekspresi (kolom dengan nilai yang berasal dari kolom lain dalam dokumen).
Selain opsi kueri, class Kueri
juga dapat menyertakan instance class
SortOptions
. 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.
Berbagai opsi kueri dan pengurutan ditentukan dengan memanggil metode penyetel pada instance class QueryOptions.Builder
dan SortOptions.Builder
, seperti dalam contoh ini:
QueryOptions
Anda harus menggunakan QueryOptions.Builder
untuk menetapkan opsi kueri. Anda tidak memiliki akses langsung ke properti ini.
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 |
NumberFoundAccuracy |
Properti ini menentukan akurasi hasil yang ditampilkan oleh Results.getNumberFound() . Batas ini menetapkan batas jumlah kecocokan yang benar-benar dihitung, sehingga menghentikan penelusuran saat batas tersebut tercapai. Jika jumlah kecocokan dalam indeks kurang dari atau sama dengan batas, jumlah yang ditampilkan adalah akurat. Jika tidak, jumlahnya adalah perkiraan berdasarkan kecocokan yang ditemukan dan ukuran serta struktur indeks. Perhatikan bahwa menetapkan nilai tinggi untuk properti ini dapat memengaruhi kompleksitas operasi penelusuran dan dapat menyebabkan waktu tunggu habis. |
Jika akurasi yang tidak ditentukan disetel ke nilai yang sama dengan Limit |
25000 |
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). | - |
SortOptions |
Tetapkan objek 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 |
---|---|---|
ReturningIdsOnly |
Tetapkan ke True atau False . Jika True , dokumen yang ditampilkan dalam hasil hanya akan berisi ID, tanpa kolom. |
False (menampilkan semua kolom). |
FieldsToReturn |
Menentukan kolom dokumen yang akan disertakan dalam hasil. Maksimal 100 kolom dapat ditentukan. | Tampilkan semua kolom dokumen (hingga 100 kolom). |
ExpressionsToReturn |
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 |
FieldsToSnippet |
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 dengan hanya dua argumen, sehingga membuat cuplikan dengan maksimal satu string yang cocok, berdasarkan string kueri yang sama dengan penelusuran yang digunakan untuk mengambil hasil: snippet("query-string", field-name) .Anda juga dapat membuat cuplikan yang disesuaikan menggunakan opsi ExpressionsToReturn dengan menambahkan ekspresi kolom yang secara eksplisit memanggil fungsi cuplikan ini. |
Tidak ada |
SortOptions
Properti SortOptions
mengontrol pengurutan dan penskoran hasil penelusuran. Anda harus menggunakan SortOptions.Builder
untuk menetapkan opsi pengurutan. Anda tidak memiliki akses langsung ke properti ini.
Properti SortOptions
mengontrol pengurutan dan penskoran hasil penelusuran.
Properti | Deskripsi | Default |
---|---|---|
SortExpressions |
Daftar SortExpressions yang menampilkan jenis Dokumen multi-dimensi. |
Tidak ada |
MatchScorer |
Objek MatchScorer opsional. 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 |
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.
Perlu diperhatikan 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 |
Perintah untuk mengurutkan hasil penelusuran, baik ASCENDING atau DESCENDING . |
DESCENDING |
DefaultValue DefaultValueDate DefaultValueNumber |
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 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 `QueryOptions`) dan mengurutkan ekspresi, yang ditetapkan di 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 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 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.