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
Instansi OTSClient harus diinisialisasi. Untuk informasi lebih lanjut, lihat Inisialisasi klien Tablestore.
Tabel data harus dibuat dan data ditulis ke dalamnya. Untuk informasi lebih lanjut, lihat Buat tabel data dan Tulis data.
Indeks pencarian harus dibuat untuk tabel data. Untuk informasi lebih lanjut, lihat Buat indeks pencarian.
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.