Gunakan Tablestore SDK untuk Python untuk menciutkan hasil indeks pencarian berdasarkan bidang tertentu dan mengembalikan satu baris untuk setiap nilai bidang yang berbeda.
Prasyarat
Pasang Tablestore SDK untuk Python dan inisialisasi klien.
Deskripsi
Fitur Collapse mengelompokkan baris yang cocok berdasarkan bidang indeks pencarian tertentu dan mengembalikan satu baris representatif untuk setiap nilai bidang yang berbeda. Baris yang dikembalikan dari setiap kelompok ditentukan oleh urutan pengurutan kueri. Untuk informasi selengkapnya, lihat Sort and paginate results. Collapse hanya memengaruhi hasil kueri dan tidak mengubah tabel.
Bidang collapse harus memiliki sorting dan agregasi yang diaktifkan serta harus berupa bidang non-array bertipe Keyword, Long, atau Double. Kueri collapse hanya mendukung paginasi menggunakan parameter limit dan offset, bukan next_token. Nilai limit + offset tidak boleh melebihi 100000. Agregasi, pengelompokan, dan jumlah total baris yang cocok didasarkan pada hasil sebelum collapse. Respons tidak menyertakan jumlah total kelompok yang telah dicollapse.
Contoh berikut menciutkan hasil berdasarkan bidang category dan mengurutkannya berdasarkan price secara menurun. Dengan demikian, baris dengan harga tertinggi dikembalikan untuk setiap kategori.
query = MatchAllQuery()
search_query = SearchQuery(
query,
sort=Sort([FieldSort("price", SortOrder.DESC)]),
collapse_field=Collapse("category"),
limit=10,
get_total_count=True,
)
response = client.search(
"example_table",
"example_index",
search_query,
ColumnsToGet(
["category", "price"],
ColumnReturnType.SPECIFIED,
),
)
print(response.total_count)
print(response.rows)
Parameter
Permintaan pencarian
Metode search mencakup parameter berikut.
|
Nama |
Tipe |
Deskripsi |
|
table_name (wajib) |
|
Nama tabel data. |
|
index_name (wajib) |
|
Nama indeks pencarian. |
|
search_query (wajib) |
|
Kondisi kueri dan konfigurasi kueri umum. |
|
columns_to_get (opsional) |
|
Konfigurasi kolom yang dikembalikan. Jika parameter ini tidak ditentukan, hanya kolom kunci primer yang dikembalikan. |
|
routing_keys (opsional) |
|
Nilai kunci primer dari bidang routing kustom. Parameter ini tidak diperlukan jika routing kustom tidak dikonfigurasi. |
|
timeout_s (opsional) |
|
Timeout permintaan dalam detik. Jika parameter ini tidak ditentukan, timeout tingkat client yang digunakan. |
Konfigurasi kueri
search_query bertipe SearchQuery dan mencakup parameter berikut.
|
Nama |
Tipe |
Deskripsi |
|
query (wajib) |
|
Kondisi kueri. Tentukan tipe Query berdasarkan kebutuhan pencocokan Anda. |
|
sort (opsional) |
|
Urutan pengurutan hasil. Untuk informasi selengkapnya, lihat Sort and paginate results. |
|
get_total_count (opsional) |
|
Menentukan apakah akan mengembalikan jumlah total baris yang cocok. Nilai default: |
|
next_token (opsional) |
|
Jangan tentukan parameter ini untuk kueri collapse. |
|
offset (opsional) |
|
Posisi awal kelompok. Nilai default: |
|
limit (opsional) |
|
Jumlah maksimum baris yang dikembalikan. Jika parameter ini disetel ke |
|
aggs (opsional) |
|
Konfigurasi agregasi metrik. Untuk informasi selengkapnya, lihat Aggregation. |
|
group_bys (opsional) |
|
Konfigurasi pengelompokan. Untuk informasi selengkapnya, lihat Aggregation. |
|
collapse_field (wajib) |
|
Konfigurasi collapse hasil. |
|
highlight (opsional) |
|
Konfigurasi ringkasan dan penyorotan untuk bidang |
Konfigurasi collapse
search_query.collapse_field bertipe Collapse dan mencakup parameter berikut.
|
Nama |
Tipe |
Deskripsi |
|
field_name (wajib) |
|
Nama bidang collapse. Sorting dan agregasi harus diaktifkan untuk bidang non-array |
Kolom yang dikembalikan
columns_to_get bertipe ColumnsToGet dan mencakup parameter berikut.
|
Nama |
Type |
Deskripsi |
|
column_names (opsional) |
|
Nama kolom atribut yang dikembalikan. Tentukan parameter ini hanya ketika |
|
return_type (opsional) |
|
Mode kolom yang dikembalikan. |
Respons
Metode search mengembalikan objek SearchResponse. Tabel berikut menjelaskan bidang utamanya.
|
Bidang |
Tipe |
Deskripsi |
|
rows |
|
Baris setelah collapse. Paling banyak satu baris dikembalikan untuk setiap nilai bidang collapse yang berbeda. |
|
next_token |
|
Token untuk halaman berikutnya. Nilai kosong menunjukkan bahwa tidak ada data tambahan yang tersedia. |
|
total_count |
|
Jumlah baris yang cocok sebelum collapse. Nilainya bergantung pada |
|
is_all_succeed |
|
Menunjukkan apakah semua partisi indeks telah dikueri. Jika nilainya |
|
agg_results |
|
Hasil agregasi metrik. Bidang ini kosong jika |
|
group_by_results |
|
Hasil pengelompokan. Bidang ini kosong jika |
|
search_hits |
|
Hit pencarian, termasuk informasi tambahan seperti baris, skor relevansi, dan sorotan. |
Respons kompatibel tupel
Mulai versi 5.2.0 Tablestore SDK untuk Python, API pencarian mengembalikan objek respons, bukan tupel. Versi 5.1.0 dan sebelumnya mengembalikan tupel secara langsung. Pada versi 5.2.1 dan seterusnya, Anda dapat memanggil SearchResponse.v1_response() untuk mendapatkan tupel yang kompatibel dengan versi sebelumnya. Untuk kode baru, akses atribut SearchResponse secara langsung guna menghindari kesalahan unpacking jika bidang respons diperluas.
(
rows,
next_token,
total_count,
is_all_succeed,
agg_results,
group_by_results,
search_hits,
) = response.v1_response()