Gunakan Tablestore SDK untuk Python untuk membuat pola dengan * dan ?, lalu mencocokkan data dalam bidang Keyword atau Text.
Prasyarat
Instal Tablestore SDK untuk Python dan inisialisasi klien.
Deskripsi
Kueri wildcard menggunakan pola yang berisi karakter wildcard untuk mencocokkan bidang terindeks. Perilaku pencocokan ini mirip dengan LIKE pada SQL. Karakter * mencocokkan nol atau lebih karakter, sedangkan karakter ? mencocokkan satu karakter apa pun. Untuk bidang Keyword, pola dicocokkan terhadap nilai bidang secara lengkap. Untuk bidang Text, pola dicocokkan terhadap token individual tanpa ditokenisasi. Sebuah pola dapat berisi hingga 32 karakter dan boleh diawali dengan karakter wildcard. Pencocokan bersifat case-sensitive. Untuk menerapkan perilaku yang mirip dengan NOT LIKE pada SQL, tambahkan WildcardQuery ke BoolQuery.must_not_queries. Saat memanggil metode search, atur jenis kueri menjadi WildcardQuery. Untuk informasi mengenai jenis bidang, lihat Jenis string.
WildcardQuery(field_name, value, weight=None)
Contoh berikut melakukan kueri terhadap baris-baris yang bidang category-nya sesuai dengan pola book-* dan mengembalikan hingga 10 baris serta jumlah total baris yang cocok.
query = WildcardQuery("category", "book-*")
search_query = SearchQuery(
query,
limit=10,
get_total_count=True,
)
response = client.search(
"example_table",
"example_index",
search_query,
ColumnsToGet(return_type=ColumnReturnType.ALL),
)
print(response.total_count)
for row in response.rows:
print(row)
Parameter
Permintaan pencarian
Metode search mencakup parameter-parameter berikut.
|
Nama |
Jenis |
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) |
|
Daftar nilai kunci primer untuk bidang routing kustom. Anda tidak perlu menentukan parameter ini 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-parameter berikut.
|
Nama |
Jenis |
Deskripsi |
|
query (wajib) |
|
Kondisi kueri. Atur parameter ini ke |
|
sort (opsional) |
|
Urutan pengurutan hasil kueri. Untuk informasi selengkapnya, lihat Mengurutkan dan membagi hasil ke dalam halaman. |
|
get_total_count (opsional) |
|
Menentukan apakah jumlah total baris yang cocok dikembalikan. Nilai default: |
|
next_token (opsional) |
|
Token paginasi. Atur parameter ini ke |
|
offset (opsional) |
|
Offset tempat kueri saat ini dimulai. Gunakan parameter ini untuk paginasi dangkal. |
|
limit (opsional) |
|
Jumlah maksimum baris yang dikembalikan. Jika parameter ini diatur ke |
|
aggs (opsional) |
|
Konfigurasi agregasi. Untuk informasi selengkapnya, lihat Agregasi. |
|
group_bys (opsional) |
|
Konfigurasi pengelompokan. Untuk informasi selengkapnya, lihat Agregasi. |
|
collapse_field (opsional) |
|
Konfigurasi collapsing hasil, yang menghapus hasil duplikat berdasarkan bidang tertentu. Untuk informasi selengkapnya, lihat Collapsing hasil kueri. |
|
highlight (opsional) |
|
Konfigurasi ringkasan dan penyorotan untuk bidang |
Kondisi kueri
search_query.query bertipe WildcardQuery dan mencakup parameter-parameter berikut.
|
Nama |
Jenis |
Deskripsi |
|
field_name (wajib) |
|
Nama bidang |
|
value (wajib) |
|
Pola kueri, yang dapat berisi hingga 32 karakter. Karakter |
|
weight (opsional) |
|
Bobot relevansi kondisi kueri. Nilainya harus berupa bilangan titik mengambang positif. Parameter ini tidak memengaruhi pencocokan atau jumlah baris yang dikembalikan. Parameter ini hanya memengaruhi urutan jika hasil diurutkan berdasarkan skor relevansi. Nilai default: |
Kolom yang dikembalikan
columns_to_get bertipe ColumnsToGet dan mencakup parameter-parameter berikut.
|
Nama |
Jenis |
Deskripsi |
|
column_names (opsional) |
|
Nama kolom atribut yang dikembalikan. Tentukan parameter ini hanya jika |
|
return_type (opsional) |
|
Mode kolom yang dikembalikan. |
Respons
Metode search mengembalikan SearchResponse. Tabel berikut menjelaskan field intinya.
|
Field |
Jenis |
Deskripsi |
|
rows |
|
Baris yang dikembalikan oleh kueri saat ini. Jumlah baris tidak melebihi |
|
next_token |
|
Token untuk halaman berikutnya. Jika field ini tidak kosong, berikan ke permintaan berikutnya untuk melanjutkan pembacaan. |
|
total_count |
|
Jumlah baris yang cocok. Nilainya bergantung pada konfigurasi |
|
is_all_succeed |
|
Menunjukkan apakah semua partisi indeks telah dikueri. Jika nilainya |
|
agg_results |
|
Hasil agregasi. Field ini kosong jika |
|
group_by_results |
|
Hasil pengelompokan. Field ini kosong jika |
|
search_hits |
|
Hit pencarian, termasuk informasi tambahan seperti skor relevansi, sorotan, dan baris anak yang cocok. |
Respons kompatibel tupel
Mulai Tablestore SDK untuk Python versi 5.2.0, 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 error unpacking jika field respons diperluas.
(
rows,
next_token,
total_count,
is_all_succeed,
agg_results,
group_by_results,
search_hits,
) = response.v1_response()