Kueri Boolean menggabungkan beberapa subkueri untuk mengambil baris dari tabel data. Tablestore hanya mengembalikan baris yang memenuhi kondisi gabungan tersebut. Setiap subkueri dapat berupa jenis kueri apa pun, termasuk kueri Boolean lainnya.
Prasyarat
-
Instans OTSClient telah diinisialisasi. Untuk informasi selengkapnya, lihat Initialize an OTSClient instance.
-
Sebuah tabel data dibuat dan data ditulis ke dalamnya. Untuk informasi lebih lanjut, lihat Membuat tabel data dan Menulis data.
-
Indeks pencarian telah dibuat untuk tabel data tersebut. Untuk informasi selengkapnya, lihat Create search indexes.
Parameter
|
Parameter |
Deskripsi |
|
TableName |
Nama tabel data. |
|
IndexName |
Nama indeks pencarian. |
|
MustQueries |
Operator logika AND. Semua subkueri dalam daftar ini harus cocok. Hanya baris yang memenuhi setiap kondisi yang dikembalikan. |
|
MustNotQueries |
Operator logika NOT. Baris yang cocok dengan salah satu subkueri dalam daftar ini tidak disertakan dalam hasil. |
|
FilterQueries |
Operator logika AND yang diterapkan sebagai filter. Hanya baris yang memenuhi semua subfilter yang dikembalikan. Berbeda dengan MustQueries, FilterQueries tidak menghitung skor relevansi. Filter ini melakukan pencocokan ya-atau-tidak, sehingga sangat cocok untuk pencocokan eksak, rentang, dan kondisi numerik. |
|
ShouldQueries |
Operator logika OR. Baris yang memenuhi paling sedikit jumlah subkueri minimum akan dikembalikan. Semakin banyak subkueri yang cocok, semakin tinggi skor relevansi baris tersebut. Jika tidak ada kondisi MustQueries, MustNotQueries, atau FilterQueries yang ditetapkan, setidaknya satu ShouldQuery harus cocok. Jika kondisi lain ditetapkan, ShouldQueries menjadi penguat relevansi opsional dengan nilai minimum default 0. Tetapkan MinimumShouldMatch untuk mengganti nilai default tersebut. |
|
MinimumShouldMatch |
Jumlah minimum kondisi ShouldQueries yang harus dipenuhi oleh suatu baris agar dikembalikan. Nilai default-nya adalah 1 ketika ShouldQueries merupakan satu-satunya kondisi, dan 0 ketika kondisi MustQueries, MustNotQueries, atau FilterQueries juga ada. |
Kode contoh
Contoh berikut menunjukkan cara membuat kueri Boolean. Contoh pertama menggunakan MustQueries untuk mewajibkan semua kondisi, sedangkan contoh kedua menggunakan ShouldQueries untuk mewajibkan paling tidak satu kondisi.
/**
* Lakukan kueri Boolean berdasarkan kombinasi subkueri.
*/
func BoolQuery(client *tablestore.TableStoreClient, tableName string, indexName string) {
searchRequest := &tablestore.SearchRequest{}
searchRequest.SetTableName(tableName)
searchRequest.SetIndexName(indexName)
// Kondisi 1: kueri rentang — Col_Long > 3
rangeQuery := &search.RangeQuery{}
rangeQuery.FieldName = "Col_Long"
rangeQuery.GT(3)
// Kondisi 2: kueri cocok — Col_Keyword berisi "hangzhou"
matchQuery := &search.MatchQuery{}
matchQuery.FieldName = "Col_Keyword"
matchQuery.Text = "hangzhou"
{
// MustQueries: kedua kondisi harus cocok (AND)
boolQuery := &search.BoolQuery{
MustQueries: []search.Query{
rangeQuery,
matchQuery,
},
}
searchQuery := search.NewSearchQuery()
searchQuery.SetQuery(boolQuery)
searchRequest.SetSearchQuery(searchQuery)
searchResponse, err := client.Search(searchRequest)
if err != nil {
fmt.Printf("%#v", err)
return
}
fmt.Println("IsAllSuccess: ", searchResponse.IsAllSuccess) // Apakah semua baris yang cocok telah dikembalikan
fmt.Println("TotalCount: ", searchResponse.TotalCount) // Total baris yang cocok dengan kueri
fmt.Println("RowCount: ", len(searchResponse.Rows))
}
{
// ShouldQueries: paling sedikit satu kondisi harus cocok (OR)
boolQuery := &search.BoolQuery{
ShouldQueries: []search.Query{
rangeQuery,
matchQuery,
},
MinimumShouldMatch: proto.Int32(1),
}
searchQuery := search.NewSearchQuery()
searchQuery.SetQuery(boolQuery)
searchRequest.SetSearchQuery(searchQuery)
searchResponse, err := client.Search(searchRequest)
if err != nil {
fmt.Printf("%#v", err)
return
}
fmt.Println("IsAllSuccess: ", searchResponse.IsAllSuccess) // Apakah semua baris yang cocok telah dikembalikan
fmt.Println("TotalCount: ", searchResponse.TotalCount) // Total baris yang cocok dengan kueri
fmt.Println("RowCount: ", len(searchResponse.Rows))
}
}
FAQ
Referensi
Saat menggunakan indeks pencarian untuk mengkueri data, Anda dapat menggunakan metode kueri berikut: term query, terms query, match all query, match query, match phrase query, prefix query, range query, wildcard query, geo query, Boolean query, KNN vector query, nested query, dan exists query. Anda dapat menggunakan metode kueri yang disediakan oleh indeks pencarian untuk mengkueri data dari berbagai dimensi sesuai kebutuhan bisnis Anda.
Anda dapat mengurutkan atau memaginasi baris yang memenuhi kondisi kueri dengan menggunakan fitur pengurutan dan paginasi. Untuk informasi selengkapnya, lihat Sorting and paging.
Anda dapat menggunakan fitur collapse (distinct) untuk menciutkan set hasil berdasarkan kolom tertentu sehingga data jenis tertentu hanya muncul sekali dalam hasil kueri. Untuk informasi selengkapnya, lihat Collapse (deduplicate).
Jika ingin menganalisis data dalam tabel data, Anda dapat menggunakan fitur agregasi pada operasi Search atau mengeksekusi pernyataan SQL. Misalnya, Anda dapat memperoleh nilai minimum dan maksimum, jumlah total, serta jumlah baris. Untuk informasi selengkapnya, lihat Aggregation dan SQL query.
Jika ingin memperoleh semua baris yang memenuhi kondisi kueri tanpa perlu mengurutkan baris tersebut, Anda dapat memanggil operasi ParallelScan dan ComputeSplits untuk menggunakan fitur pemindaian paralel. Untuk informasi selengkapnya, lihat Perform a parallel scan.