Kueri boolean (BoolQuery) berisi satu atau lebih subkueri dan menggunakan subkueri tersebut untuk memeriksa apakah suatu baris memenuhi kondisi kueri. Setiap subkueri dapat berupa jenis kueri apa pun, termasuk kueri boolean lainnya.
Prasyarat
-
Instans OTSClient telah diinisialisasi. Untuk informasi selengkapnya, lihat Inisialisasi instans OTSClient.
-
Tabel data telah dibuat dan data telah ditulis ke tabel tersebut. Untuk informasi selengkapnya, lihat Buat tabel data dan Tulis data.
-
Indeks pencarian telah dibuat untuk tabel data tersebut. Untuk informasi selengkapnya, lihat Buat indeks pencarian.
Parameter
|
Parameter |
Deskripsi |
|
tableName |
Nama tabel data. |
|
indexName |
Nama indeks pencarian. |
|
mustQueries |
Daftar kueri. Suatu baris harus sesuai dengan semua subkueri. Ini setara dengan operator AND. |
|
mustNotQueries |
Daftar kueri. Suatu baris tidak boleh sesuai dengan salah satu subkueri. Ini setara dengan operator NOT. |
|
filterQueries |
Daftar kueri. Suatu baris harus sesuai dengan semua subkueri dalam filter. Filter mirip dengan kueri, tetapi tidak menghitung skor relevansi berdasarkan jumlah filter yang sesuai. |
|
shouldQueries |
Daftar kueri. Suatu baris dapat sesuai dengan subkueri ini. Ini setara dengan operator OR. Suatu baris harus sesuai dengan minimal jumlah subkueri shouldQueries tertentu agar dianggap sesuai. Semakin banyak subkueri shouldQueries yang sesuai dengan suatu baris, semakin tinggi skor relevansinya. |
|
minimumShouldMatch |
Jumlah minimum subkueri shouldQueries yang harus sesuai. Nilai default-nya adalah 1 jika hanya shouldQueries yang ada pada level yang sama. Nilai default-nya adalah 0 jika terdapat kueri lain, seperti mustQueries, mustNotQueries, dan filterQueries, pada level yang sama. |
Contoh
Contoh berikut menunjukkan cara membuat BoolQuery untuk melakukan kueri boolean.
var client = require('../client');
var TableStore = require('../../index.js');
var Long = TableStore.Long;
/**
* Gunakan kueri boolean untuk mengimplementasikan (col2 < 4 ATAU col3 < 5) ATAU (col2 = 4 DAN (col3 = 5 ATAU col3 = 6)). Logikanya sebagai berikut:
* boolQuery1 = rangeQuery(col2 < 4) ATAU rangeQuery(col3 < 5)
* boolQuery2 = termQuery(col3 = 5) ATAU termQuery(col3 = 6)
* boolQuery3 = termQuery(col2 = 4) DAN boolQuery2
* boolQuery4 = boolQuery1 ATAU boolQuery3
*/
client.search({
tableName: "sampleTable",
indexName: "sampleSearchIndex",
searchQuery: {
offset: 0, // Offset kueri.
limit: 10, // Untuk hanya mendapatkan jumlah baris tanpa mengambil data, atur limit ke 0. Ini tidak akan mengembalikan baris apa pun.
getTotalCount: false, // TotalCount dalam hasil menunjukkan jumlah total baris dalam tabel. Nilai default-nya adalah false, artinya tidak dikembalikan.
query: { // Buat boolQuery4. Atur kondisi kueri agar sesuai dengan minimal salah satu dari boolQuery1 dan boolQuery3.
queryType: TableStore.QueryType.BOOL_QUERY,
query: {
shouldQueries: [ // Anda dapat menggunakan mustQueries, shouldQueries, atau mustNotQueries.
{ // Buat boolQuery1. Atur kondisi kueri agar sesuai dengan minimal salah satu dari "Kondisi Kueri 1" dan "Kondisi Kueri 2".
queryType: TableStore.QueryType.BOOL_QUERY,
query: {
// shouldQueries: Kondisi kueri adalah nilai col2 kurang dari 4 atau nilai col3 kurang dari 5.
shouldQueries:[
{
// Kondisi Kueri 1: rangeQuery, nilai col2 kurang dari 4.
queryType: TableStore.QueryType.RANGE_QUERY,
query:{
fieldName: "col2",
rangeTo: 4
}
},
{
// Kondisi Kueri 2: rangeQuery, nilai col3 kurang dari 5.
queryType: TableStore.QueryType.RANGE_QUERY,
query:{
fieldName: "col3",
rangeTo: 5
}
}
],
minimumShouldMatch:1
}
},
{ // Buat boolQuery3. Atur kondisi kueri agar sesuai dengan kedua "Kondisi Kueri 3" dan boolQuery2.
queryType: TableStore.QueryType.BOOL_QUERY,
query: {
mustQueries: [
// mustQueries: Kondisi kueri adalah nilai col2 sama dengan 4, dan nilai col3 sama dengan 5 atau 6.
{
// Kondisi Kueri 3: termQuery, nilai col2 sama dengan 4.
queryType:TableStore.QueryType.TERM_QUERY,
query: {
fieldName : "col2",
term: 4
}
},
{ // Buat boolQuery2: Atur kondisi kueri agar sesuai dengan minimal salah satu dari "Kondisi Kueri 4" dan "Kondisi Kueri 5".
queryType: TableStore.QueryType.BOOL_QUERY,
query: {
// shouldQueries: Kondisi kueri adalah nilai col3 sama dengan 5 atau 6.
shouldQueries:[
{
// Kondisi Kueri 4: termQuery, nilai col3 sama dengan 5.
queryType: TableStore.QueryType.TERM_QUERY,
query:{
fieldName:"col3",
term: 5
}
},
{
// Kondisi Kueri 5: termQuery, nilai col3 sama dengan 6.
queryType: TableStore.QueryType.TERM_QUERY,
query:{
fieldName:"col3",
term: 6
}
}
],
minimumShouldMatch:1
}
}
]
}
}
],
minimumShouldMatch: 1 // Ini hanya berlaku untuk shouldQueries. Menentukan jumlah minimum kondisi yang harus sesuai.
}
},
},
columnToGet: { // Menentukan kolom yang akan dikembalikan. Nilai yang valid: RETURN_SPECIFIED (mengembalikan kolom kustom), RETURN_ALL (mengembalikan semua kolom), RETURN_ALL_FROM_INDEX (mengembalikan semua kolom dari indeks pencarian), dan RETURN_NONE (tidak mengembalikan kolom apa pun).
returnType: TableStore.ColumnReturnType.RETURN_SPECIFIED,
returnNames: ["col2", "col3", "col4"]
}
}, function (err, data) {
if (err) {
console.log('error:', err);
return;
}
console.log('success:', JSON.stringify(data, null, 2));
});
FAQ
Referensi
Jenis kueri berikut didukung oleh indeks pencarian: kueri tepat, kueri istilah, kueri cocok semua, kueri cocok, kueri frasa cocok, kueri awalan, kueri rentang, kueri wildcard, Kueri Boolean, kueri geografis, kueri bersarang, kueri vektor, dan kueri exists. Anda dapat memilih jenis kueri sesuai kebutuhan bisnis Anda.
Jika Anda ingin mengurutkan atau melakukan paginasi pada baris yang memenuhi kondisi kueri, gunakan fitur pengurutan dan paginasi. Untuk informasi selengkapnya, lihat Pengurutan dan paginasi.
Jika Anda ingin menciutkan set hasil berdasarkan kolom tertentu, gunakan fitur collapse (distinct), sehingga data jenis tertentu hanya muncul sekali dalam hasil kueri. Untuk informasi selengkapnya, lihat Collapse (distinct).
Jika Anda ingin menganalisis data dalam tabel, seperti mendapatkan nilai ekstrem, jumlah total, dan jumlah baris, lakukan operasi agregasi atau eksekusi pernyataan SQL. Untuk informasi selengkapnya, lihat Agregasi dan Kueri SQL.
Jika Anda ingin dengan cepat mendapatkan semua baris yang memenuhi kondisi kueri tanpa perlu mengurutkannya, panggil operasi ParallelScan dan ComputeSplits untuk menggunakan fitur pemindaian paralel. Untuk informasi selengkapnya, lihat Pemindaian paralel.