Klausa query
Klausa query adalah bagian paling dasar dan tidak terpisahkan dari sebuah pernyataan. Klausa query mendefinisikan konten spesifik yang akan di-query berdasarkan bidang indeks tertentu. Anda dapat menentukan beberapa kondisi query dan mendefinisikan hubungan mereka dengan menggunakan operator logis seperti AND, OR, ANDNOT, dan RANK.
Sebagai contoh, jika terdapat tabel dengan bidang title dan subject bertipe data TEXT, Anda dapat membuat indeks komposit bernama default berdasarkan bidang-bidang tersebut. Dalam klausa query sebuah pernyataan, Anda dapat menentukan indeks default dan kueri pencarian yang mencakup istilah dalam bidang title atau subject untuk menemukan dokumen yang sesuai dengan kueri pencarian tersebut.
Anda juga dapat membuat indeks bernama title_search berdasarkan bidang title. Saat Anda melakukan query berdasarkan indeks title_search, sistem hanya mengembalikan dokumen di mana nilai dalam bidang title cocok dengan kueri pencarian yang Anda tentukan.
Sintaksis
Query Sederhana
Sintaksis:
query=Nama indeks:'Kueri pencarian'^boost Operator logis Nama indeks:'Kueri pencarian'^boost
Nama indeks: Indeks tempat Anda ingin menjalankan query. Indeks yang ditentukan harus termasuk dalam skema indeks yang telah dibuat. Bidang indeks digunakan untuk mencari dokumen di mana sumber bidang indeks yang ditentukan mengandung kueri pencarian.
Kueri pencarian: Konten yang ingin Anda cari.
boost: Bobot yang ingin Anda tetapkan untuk kueri pencarian. Nilai parameter ini harus bertipe INT. Rentang valid: [0,99]. Jika tidak ditentukan, nilai boost default adalah 99.
Operator logis: Operator yang digunakan untuk mendefinisikan hubungan logis antara kondisi query. Operator yang didukung meliputi
(),AND,OR,ANDNOT, danRANK. Operator harus ditulis dalam huruf besar. Prioritas operator adalah sebagai berikut: RANK < OR < AND < ANDNOT < ().AND: Jika operator ini digunakan di antara dua kondisi query, sistem hanya mengembalikan dokumen yang memenuhi kedua kondisi. Contohnya, klausa query=default:'Mobile Phone' AND default:'Bluetooth' akan menemukan dokumen yang mengandung "Mobile Phone" dan "Bluetooth".
OR: Jika operator ini digunakan di antara dua kondisi query, sistem mengembalikan dokumen yang memenuhi salah satu kondisi. Contohnya, klausa query=default:'Mobile Phone' OR default:'Bluetooth' akan menemukan dokumen yang mengandung "Mobile Phone" atau "Bluetooth".
ANDNOT: Jika operator ini digunakan di antara dua kondisi, sistem mengembalikan dokumen yang hanya memenuhi kondisi di sebelah kiri. Contohnya, klausa query=default:'Mobile Phone' ANDNOT default:'Bluetooth' akan menemukan dokumen yang mengandung "Mobile Phone" tetapi tidak mengandung "Bluetooth".
RANK: Jika operator ini digunakan di antara dua kondisi, sistem mengembalikan dokumen yang memenuhi kondisi di sebelah kiri dan mungkin tidak memenuhi kondisi di sebelah kanan. Contohnya, klausa query=default:'Mobile Phone' RANK default:'Bluetooth' akan menemukan dokumen yang mengandung "Mobile Phone" dan mungkin tidak mengandung "Bluetooth". Operator ini berguna ketika kueri pencarian tertentu diperlukan untuk menghitung skor relevansi tanpa memengaruhi hasil query. Dalam contoh ini, kondisi default:'Bluetooth' digunakan untuk menghitung skor relevansi berdasarkan teks dalam dokumen, sehingga dokumen yang mengandung "Bluetooth" diberi peringkat lebih tinggi.
Query Lanjutan
Tentukan Beberapa Kueri Pencarian Berdasarkan Indeks yang Sama
Sintaksis:
query=Nama indeks:'Kueri pencarian'^boost | 'Kueri pencarian'^boost
query=Nama indeks:'Kueri pencarian'^boost & 'Kueri pencarian'^boost
Garis vertikal (|) menentukan operator OR. Ampersand (&) menentukan operator AND.
Query Frase
Sintaksis:
query=Nama indeks:"Kueri pencarian"^boost Operator logis Nama indeks:"Kueri pencarian"^boost
Dalam query frase, apit setiap kueri pencarian dengan tanda kutip ganda ("). Dalam query frase, semua istilah terhubung dan disusun dalam urutan yang sama sebelum dan sesudah analisis.
Kueri pencarian yang diapit dalam tanda kutip ganda (
") adalah query frase. Dalam query frase, semua istilah terhubung dan disusun dalam urutan yang sama sebelum dan sesudah analisis.Query rentang meliputi query geografi dan query rentang nilai.
Query Geografi
Sintaksis:
query=Nama indeks:'SHAPE(ARGS...)'
Berikut adalah bentuk SHAPE(ARGS...) yang dapat ditentukan dalam klausa query:
Titik: Tentukan titik dalam format point(LON LAT). LON adalah nilai longitude, dan LAT adalah nilai latitude. Pisahkan nilai longitude dan latitude dengan spasi.
Lingkaran: Tentukan lingkaran dalam format circle(LON LAT,Radius). LON adalah nilai longitude pusat lingkaran, LAT adalah nilai latitude pusat lingkaran, dan Radius adalah jari-jari lingkaran dalam meter.
Persegi panjang: Tentukan persegi panjang dalam format rectangle(minLON minLAT,maxLON maxLAT). Untuk latitude, nilai maxLAT harus lebih besar dari atau sama dengan minLAT. Jika nilai maxLAT lebih kecil dari minLAT, sistem secara otomatis menukar nilai-nilai tersebut. Untuk longitude, nilai minLON harus lebih kecil dari maxLON. Jika nilai minLON lebih besar dari maxLON, hasilnya salah.
Poligon: Tentukan poligon dalam format polygon(LON1 LAT1,LON2 LAT2,LON3 LAT3,LON4 LAT4,...). Poligon cembung atau cekung dapat ditentukan. Titik awal dan akhir poligon harus sama. Tidak boleh ada sisi berdekatan yang segaris atau sisi yang berpotongan.
Catatan:
Indeks yang ditentukan harus bertipe SPATIAL.
Ekspresi untuk mendefinisikan lingkaran harus diapit dalam tanda kutip tunggal ('). Contoh: query=spatial_index:'circle(130.0 10.0,1000.0)'.
Koordinat titik dari garis dan poligon dipetakan ke peta dunia datar untuk menentukan ruang lingkup query garis dan query poligon, tanpa memperhatikan kasus melintasi 180 derajat longitude. Hasil query indeks terbalik pada bidang lokasi akurat. Hasil query indeks terbalik pada bidang garis dan poligon perlu difilter.
Query Rentang Nilai
Sintaksis:
query=Nama indeks:(Angka 1,Angka 2]
Angka 1 menentukan awal rentang nilai, dan Angka 2 menentukan akhir rentang nilai. Anda dapat menggunakan titik akhir terbuka dan tertutup untuk menentukan rentang. Dalam contoh kode, tanda kurung pembuka ( sebelum Angka 1 menunjukkan bahwa Angka 1 adalah titik akhir terbuka, dan tanda kurung penutup ] di sebelah Angka 2 menunjukkan bahwa Angka 2 adalah titik akhir tertutup.
Contoh:
query=price:(3,100): Men-query nilai yang lebih besar dari 3 dan lebih kecil dari 100.
query=price:[3,100]: Men-query nilai yang lebih besar dari atau sama dengan 3 dan lebih kecil dari atau sama dengan 100.
query=price:(3,100]: Men-query nilai yang lebih besar dari 3 dan lebih kecil dari atau sama dengan 100.
query=price:(, 100): Men-query nilai yang lebih kecil dari 100. Dalam klausa ini, awal rentang nilai tidak ditentukan.
Catatan:
Bidang indeks harus bertipe numerik.
Nilai dalam bidang yang ditentukan harus bilangan bulat. Bilangan desimal tidak didukung.
Query Tanggal
Sintaksis:
query=Nama indeks:(Waktu mulai,Waktu akhir).
Cap waktu untuk waktu mulai dan waktu akhir harus bertipe INTEGER dan akurat hingga milidetik. Jika waktu mulai tidak ditentukan, sistem memulai pemindaian dari nilai 0. Jika waktu akhir tidak ditentukan, nilai default 4102416000000 digunakan, yang menunjukkan cap waktu 2100-01-01 00:00. Anda dapat menggunakan titik akhir terbuka dan tertutup untuk menentukan rentang.
Catatan:
Bidang indeks harus bertipe DATE.
Cap waktu harus bertipe INTEGER dan akurat hingga milidetik. Jika cap waktu yang ditentukan melebihi 4102416000000, sistem menggunakan 4102416000000 sebagai cap waktu.