全部产品
Search
文档中心

Tablestore:Kueri Boolean

更新时间:Jul 06, 2025

Kueri Boolean digunakan untuk mengambil data dari tabel berdasarkan kombinasi subkueri. Tablestore akan mengembalikan baris yang sesuai dengan subkueri tersebut. Subkueri dapat berupa tipe apa pun, termasuk kueri Boolean itu sendiri.

Prasyarat

Parameter

Parameter

Deskripsi

NamaTabel

Nama dari tabel data.

NamaIndeks

Nama dari indeks pencarian.

HarusKueri

Daftar subkueri yang hasil kueri harus cocok. Parameter ini setara dengan operator AND.

TidakBolehKueri

Daftar subkueri yang hasil kueri tidak boleh cocok. Parameter ini setara dengan operator NOT.

FilterKueri

Daftar subkueri. Hanya baris yang memenuhi semua filter yang dikembalikan. Filter mirip dengan kueri kecuali bahwa filter tidak menghitung skor relevansi berdasarkan jumlah subfilter yang dipenuhi oleh sebuah baris.

SeharusnyaKueri

Daftar subkueri. Baris yang memenuhi jumlah minimum kondisi subkueri yang ditentukan akan dikembalikan. Subkueri tersebut memiliki hubungan OR.

Hanya baris yang memenuhi setidaknya jumlah minimum kondisi subkueri yang ditentukan oleh parameter SeharusnyaKueri yang akan dikembalikan.

Skor relevansi keseluruhan yang lebih tinggi menunjukkan bahwa lebih banyak kondisi subkueri yang ditentukan oleh parameter SeharusnyaKueri terpenuhi.

MinimumSeharusnyaCocok

Jumlah minimum kondisi subkueri yang ditentukan oleh parameter SeharusnyaKueri yang harus dipenuhi oleh baris yang dikembalikan. Jika tidak ada kondisi subkueri lain selain kondisi subkueri yang ditentukan oleh SeharusnyaKueri, nilai default dari parameter MinimumSeharusnyaCocok adalah 1. Jika kondisi subkueri lain, seperti kondisi subkueri yang ditentukan oleh HarusKueri, TidakBolehKueri, atau FilterKueri, ditentukan, nilai default dari parameter MinimumSeharusnyaCocok adalah 0.

Contoh kode

Berikut adalah contoh kode untuk melakukan kueri Boolean berdasarkan kombinasi subkueri:

/**
 * 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: Lakukan kueri rentang untuk mengambil baris di mana nilai kolom Col_Long lebih besar dari 3. 
     */
    rangeQuery := &search.RangeQuery{}
    rangeQuery.FieldName = "Col_Long"
    rangeQuery.GT(3)

    /**
     * Kondisi 2: Lakukan kueri tepat untuk mengambil baris di mana nilai kolom Col_Keyword adalah hangzhou. 
     */
    matchQuery := &search.MatchQuery{}
    matchQuery.FieldName = "Col_Keyword"
    matchQuery.Text = "hangzhou"

    {
        /**
         * Buat kueri Boolean di mana baris harus memenuhi Kondisi Kueri 1 dan Kondisi Kueri 2. 
         */
        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) // Periksa apakah semua baris yang memenuhi kondisi kueri dikembalikan. 
        fmt.Println("TotalCount: ", searchResponse.TotalCount) // Tampilkan total jumlah baris yang memenuhi kondisi kueri bukan jumlah baris yang dikembalikan. 
        fmt.Println("RowCount: ", len(searchResponse.Rows))
    }
    {
        /**
         * Buat kueri Boolean di mana baris harus memenuhi setidaknya satu dari Kondisi Kueri 1 dan Kondisi Kueri 2. 
         */
        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) // Periksa apakah semua baris yang memenuhi kondisi kueri dikembalikan. 
        fmt.Println("TotalCount: ", searchResponse.TotalCount) // Tampilkan total jumlah baris yang memenuhi kondisi kueri bukan jumlah baris yang dikembalikan. 
        fmt.Println("RowCount: ", len(searchResponse.Rows))
    }
}           

Pertanyaan Umum

Referensi

  • Saat menggunakan indeks pencarian untuk mengambil data, Anda dapat menggunakan metode kueri berikut: kueri tepat, kueri terms, kueri cocok semua, kueri cocok, kueri frasa cocok, kueri awalan, kueri rentang, kueri wildcard, kueri geo, kueri Boolean, kueri vektor KNN, kueri bersarang, dan kueri eksis. Metode ini dapat digunakan untuk mengambil data dari berbagai dimensi sesuai kebutuhan bisnis Anda.

    Anda dapat mengurutkan atau membagi halaman baris yang memenuhi kondisi kueri menggunakan fitur pengurutan dan paginasi. Untuk informasi lebih lanjut, lihat Pengurutan dan paginasi.

    Fitur collapse (distinct) dapat digunakan untuk merangkum set hasil berdasarkan kolom tertentu, sehingga data dari tipe tertentu hanya muncul sekali dalam hasil kueri. Untuk informasi lebih lanjut, lihat Collapse (distinct).

  • Untuk menganalisis data dalam tabel, Anda dapat menggunakan fitur agregasi dari operasi Search atau menjalankan pernyataan SQL. Misalnya, Anda bisa mendapatkan nilai minimum, maksimum, jumlah, dan total jumlah baris. Untuk informasi lebih lanjut, lihat Agregasi dan Kueri SQL.

  • Jika Anda ingin mendapatkan semua baris yang memenuhi kondisi kueri tanpa perlu mengurutkan baris, Anda dapat memanggil operasi ParallelScan dan ComputeSplits untuk menggunakan fitur pemindaian paralel. Untuk informasi lebih lanjut, lihat Lakukan pemindaian paralel.