Gunakan Tablestore SDK untuk Python untuk mengembalikan fragmen bidang Text yang berisi token yang cocok dan menandai token tersebut.
Prasyarat
Instal Tablestore SDK untuk Python dan inisialisasi klien.
Fitur ringkasan dan penyorotan memerlukan SDK versi 6.0.0 atau lebih baru. Disarankan untuk menggunakan versi SDK terbaru.
Saat membuat search index, atur enable_highlighting ke True untuk bidang Text target.
Deskripsi
Ringkasan dan penyorotan mengekstraksi fragmen teks di sekitar token yang cocok serta menandainya dengan pre-tag dan post-tag. Fitur ini hanya mendukung bidang Text. Dalam kueri, gunakan SearchQuery.highlight untuk menentukan bidang dan konfigurasi fragmen.
Tablestore SDK untuk Python versi 6.4.6 mendukung ringkasan dan penyorotan untuk TermQuery, TermsQuery, PrefixQuery, WildcardQuery, RangeQuery, BoolQuery, MatchQuery, dan MatchPhraseQuery. Untuk BoolQuery, Anda dapat menyoroti bidang yang digunakan oleh tipe sub-kueri yang didukung. Untuk NestedQuery, konfigurasikan penyorotan pada baris anak yang cocok melalui InnerHits.highlight. Untuk informasi selengkapnya, lihat Nested query.
Dengan MatchQuery atau MatchPhraseQuery, sebuah token yang cocok dapat ditandai oleh beberapa pasang pre-tag dan post-tag. MatchPhraseQuery tidak mendukung penyorotan untuk bidang Text yang menggunakan alat analisis semantik maksimum. Batas fragmen dapat memotong token yang cocok sehingga mencegah token tersebut disorot.
Contoh berikut melakukan kueri terhadap token tablestore dalam bidang description dan menandai token yang cocok dalam fragmen dengan <b> dan </b>.
query = MatchQuery("description", "tablestore")
highlight = Highlight(
[
HighlightParameter(
"description",
number_of_fragments=1,
fragment_size=100,
pre_tag="",
post_tag="",
)
],
HighlightEncoder.PLAIN_MODE,
)
response = client.search(
"example_table",
"example_index",
SearchQuery(query, limit=10, highlight=highlight),
)
for hit in response.search_hits:
for field in hit.highlight_result.highlight_fields:
print(field.field_name, field.field_fragments)
Parameter
search_query.highlight bertipe Highlight. Tabel berikut menggunakan path lengkap untuk menjelaskan dua tingkat konfigurasi Highlight dan HighlightParameter.
|
Nama |
Tipe |
Deskripsi |
|
highlight_parameters (wajib) |
|
Konfigurasi fragmen yang disorot untuk bidang. Setiap bidang harus memiliki penyorotan diaktifkan dan berpartisipasi dalam tipe kueri yang mendukung penyorotan. |
|
highlight_encoder (opsional) |
|
Mode pengkodean teks fragmen. |
|
highlight_parameters[].field_name (wajib) |
|
Nama bidang |
|
highlight_parameters[].number_of_fragments (opsional) |
|
Jumlah maksimum fragmen yang dikembalikan untuk suatu bidang. Kami merekomendasikan nilai |
|
highlight_parameters[].fragment_size (opsional) |
|
Panjang target fragmen. Nilai default: |
|
highlight_parameters[].pre_tag (opsional) |
|
Pre-tag untuk token yang cocok. Nilai default: |
|
highlight_parameters[].post_tag (opsional) |
|
Post-tag untuk token yang cocok. Nilai default: |
|
highlight_parameters[].fragments_order (opsional) |
|
Urutan pengurutan fragmen. |
Respons
Hasil penyorotan tersedia di SearchResponse.search_hits[].highlight_result dan memiliki struktur berikut.
|
Bidang |
Tipe |
Deskripsi |
|
search_hits |
|
Hasil pencarian. |
|
search_hits[].row |
|
Baris yang cocok. |
|
search_hits[].highlight_result |
|
Hasil ringkasan dan penyorotan untuk baris tersebut. Nilainya kosong jika tidak ada penyorotan yang dikembalikan. |
|
search_hits[].highlight_result.highlight_fields |
|
Penyorotan untuk bidang dalam baris tersebut. |
|
highlight_fields[].field_name |
|
Nama bidang yang disorot. |
|
highlight_fields[].field_fragments |
|
Fragmen yang disorot. Token yang cocok ditandai dengan tag yang telah dikonfigurasi. |
Respons kompatibel Tupel
Mulai dari 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 kesalahan unpacking jika bidang respons diperluas.
(
rows,
next_token,
total_count,
is_all_succeed,
agg_results,
group_by_results,
search_hits,
) = response.v1_response()