全部产品
Search
文档中心

Tablestore:Kueri Boolean

更新时间:Jul 02, 2025

Kueri Boolean mengambil data dari tabel berdasarkan kombinasi subkueri. Tablestore mengembalikan baris yang sesuai dengan subkueri, yang dapat berupa tipe apa pun, termasuk kueri Boolean.

Prasyarat

Parameter

Parameter

Deskripsi

must_queries

Daftar subkueri. Hanya baris yang memenuhi semua kondisi subkueri yang dikembalikan. Parameter ini setara dengan operator AND.

must_not_queries

Daftar subkueri. Hanya baris yang tidak memenuhi salah satu kondisi subkueri yang dikembalikan. Parameter ini setara dengan operator NOT.

filter_queries

Daftar subkueri. Hanya baris yang cocok dengan semua filter yang dikembalikan. Filter mirip dengan kueri kecuali bahwa filter tidak menghitung skor relevansi berdasarkan jumlah subfilter yang dimiliki baris tersebut.

should_queries

Daftar subkueri yang hasil kueri bisa atau tidak bisa cocok. Parameter ini setara dengan operator OR.

Hanya baris yang memenuhi jumlah minimum kondisi subkueri yang ditentukan oleh parameter should_queries yang dikembalikan.

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

minimum_should_match

Jumlah minimum kondisi subkueri yang ditentukan oleh parameter should_queries yang harus dipenuhi oleh baris yang dikembalikan. Jika hanya parameter should_queries yang digunakan untuk menentukan kondisi subkueri, nilai default dari parameter minimum_should_match adalah 1. Jika satu atau lebih dari parameter must_queries, must_not_queries, dan filter_queries juga digunakan untuk menentukan kondisi subkueri, nilai default dari parameter minimum_should_match adalah 0.

table_name

Nama tabel data.

index_name

Nama indeks pencarian.

Contoh

Berikut ini adalah contoh kode untuk melakukan kueri Boolean.

  • Tablestore SDK for Python V5.2.1 atau lebih baru

    Secara default, jika Anda menggunakan Tablestore SDK for Python V5.2.1 atau lebih baru untuk melakukan kueri Boolean, objek SearchResponse akan dikembalikan. Berikut adalah contoh permintaan:

    # Col_Keyword > 'key100' and (Col_Long > 110 and Col_Long < 200) and not (Col_Keyword = 'key121') and
    # should_queries(Col_Keyword > 'key120' or Col_Long < 300, minimum_should_match = 2)
    bool_query = BoolQuery(
        must_queries=[
            RangeQuery('Col_Keyword', range_from='key100', include_lower=False),
            # Gunakan BoolQuery. 
            BoolQuery(
                # Tetapkan subkueri untuk mendapatkan data yang memenuhi semua kondisi penyaringan. 
                must_queries=[
                    RangeQuery('Col_Long', range_from=110, include_lower=False),
                    RangeQuery('Col_Long', range_to=200, include_upper=False)
                ],
            )
        ],
        # Tetapkan subkueri untuk mengecualikan data yang memenuhi semua kondisi penyaringan. 
        must_not_queries=[
            TermQuery('Col_Keyword', 'key121')
        ],
        should_queries=[
            RangeQuery('Col_Keyword', range_from='key120', include_lower=False),
            RangeQuery('Col_Long', range_to=300, include_upper=130)
        ],
        minimum_should_match=2
    )
    # Buat kueri Boolean dengan menentukan parameter kueri, termasuk sort, limit, dan get_total_count. 
    search_response = client.search(
        '<TABLE_NAME>', '<SEARCH_INDEX_NAME>',
        SearchQuery(
            bool_query,
            sort=Sort(sorters=[FieldSort('Col_Long', SortOrder.ASC)]),
            limit=100,
            get_total_count=True),
        ColumnsToGet(return_type=ColumnReturnType.ALL)
    )
    print('request_id : %s' % search_response.request_id)
    print('is_all_succeed : %s' % search_response.is_all_succeed)
    print('total_count : %s' % search_response.total_count)
    print('rows : %s' % search_response.rows)

    Anda dapat menggunakan permintaan berikut untuk mengembalikan hasil tipe Tuple:

    # Col_Keyword > 'key100' and (Col_Long > 110 and Col_Long < 200) and not (Col_Keyword = 'key121') and 
    # should_queries(Col_Keyword > 'key120' or Col_Long < 300, minimum_should_match = 2) 
    bool_query = BoolQuery(
        must_queries=[
            RangeQuery('Col_Keyword', range_from='key100', include_lower=False),
            # Gunakan BoolQuery. 
            BoolQuery(
                # Tetapkan subkueri untuk mendapatkan data yang memenuhi semua kondisi penyaringan. 
                must_queries=[
                    RangeQuery('Col_Long', range_from=110, include_lower=False),
                    RangeQuery('Col_Long', range_to=200, include_upper=False)
                ],
            )
        ],
        # Tetapkan subkueri untuk mengecualikan data yang memenuhi semua kondisi penyaringan. 
        must_not_queries=[
            TermQuery('Col_Keyword', 'key121')
        ],
        should_queries=[
            RangeQuery('Col_Keyword', range_from='key120', include_lower=False),
            RangeQuery('Col_Long', range_to=300, include_upper=130)
        ],
        minimum_should_match=2
    )
    # Buat kueri Boolean dengan menentukan parameter kueri, termasuk sort, limit, dan get_total_count. 
    rows, next_token, total_count, is_all_succeed, agg_results, group_by_results = client.search(
        '<TABLE_NAME>', '<SEARCH_INDEX_NAME>',
        SearchQuery(
            bool_query,
            sort=Sort(sorters=[FieldSort('Col_Long', SortOrder.ASC)]),
            limit=100,
            get_total_count=True),
        ColumnsToGet(return_type=ColumnReturnType.ALL)
    ).v1_response()
  • Tablestore SDK for Python sebelum versi 5.2.1

    Jika Anda menggunakan versi Tablestore SDK for Python sebelum 5.2.1 untuk melakukan kueri Boolean, hasil tipe Tuple akan dikembalikan secara default. Berikut adalah contoh permintaan:

    # Col_Keyword > 'key100' and (Col_Long > 110 and Col_Long < 200) and not (Col_Keyword = 'key121') and 
    # should_queries(Col_Keyword > 'key120' or Col_Long < 300, minimum_should_match = 2) 
    bool_query = BoolQuery(
        must_queries=[
            RangeQuery('Col_Keyword', range_from='key100', include_lower=False),
            # Gunakan BoolQuery. 
            BoolQuery(
                # Tetapkan subkueri untuk mendapatkan data yang memenuhi semua kondisi penyaringan. 
                must_queries=[
                    RangeQuery('Col_Long', range_from=110, include_lower=False),
                    RangeQuery('Col_Long', range_to=200, include_upper=False)
                ],
            )
        ],
        # Tetapkan subkueri untuk mengecualikan data yang memenuhi semua kondisi penyaringan. 
        must_not_queries=[
            TermQuery('Col_Keyword', 'key121')
        ],
        should_queries=[
            RangeQuery('Col_Keyword', range_from='key120', include_lower=False),
            RangeQuery('Col_Long', range_to=300, include_upper=130)
        ],
        minimum_should_match=2
    )
    # Buat kueri Boolean dengan menentukan parameter kueri, termasuk sort, limit, dan get_total_count. 
    rows, next_token, total_count, is_all_succeed = client.search(
        '<TABLE_NAME>', '<SEARCH_INDEX_NAME>',
        SearchQuery(
            bool_query,
            sort=Sort(sorters=[FieldSort('Col_Long', SortOrder.ASC)]),
            limit=100,
            get_total_count=True),
        ColumnsToGet(return_type=ColumnReturnType.ALL)
    )

FAQ

Referensi

  • Saat menggunakan indeks pencarian untuk menanyakan data, Anda dapat menggunakan metode kueri berikut: kueri tepat, kueri terms, kueri match all, kueri match, kueri match phrase, kueri prefix, kueri range, kueri wildcard, kueri geo, kueri Boolean, kueri vektor KNN, kueri nested, dan kueri exists. Anda dapat menggunakan metode kueri yang disediakan oleh indeks pencarian untuk menanyakan data dari beberapa dimensi sesuai kebutuhan bisnis Anda.

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

    Anda dapat menggunakan fitur collapse (distinct) untuk meruntuhkan set hasil berdasarkan kolom tertentu. Dengan cara ini, data dari tipe yang ditentukan muncul hanya sekali dalam hasil kueri. Untuk informasi lebih lanjut, lihat Collapse (distinct).

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

  • Jika Anda ingin memperoleh 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 Pemindaian paralel.