Gunakan fitur ringkasan dan penyorotan pada Tablestore SDK for Java untuk mengembalikan fragmen dari bidang Text yang berisi kata kunci yang sesuai, serta menandai kata kunci tersebut dengan tag yang telah dikonfigurasi.
Prasyarat
Instal Tablestore SDK for Java dan inisialisasi klien.
Deskripsi fitur
Fitur ringkasan dan penyorotan mengekstraksi fragmen teks di sekitar kata kunci yang sesuai dengan kueri, lalu membungkus kata kunci tersebut dengan pre-tag dan post-tag. Fragmen ini dapat digunakan untuk menampilkan konteks hasil pencocokan kueri. Fitur ini hanya mendukung bidang Text.
Sebelum menggunakan ringkasan dan penyorotan, atur enableHighlighting ke true untuk bidang tersebut saat Anda membuat indeks pencarian. Dalam kueri, gunakan SearchQuery.highlight untuk menentukan bidang yang fragmennya ingin Anda kembalikan beserta pengaturan fragmen tersebut. Bidang tersebut harus digunakan dalam kondisi kueri yang mendukung ringkasan dan penyorotan; jika tidak, tidak ada fragmen yang disorot akan dikembalikan untuk bidang tersebut.
Jenis kueri berikut dapat mengembalikan hasil ringkasan dan penyorotan: TermQuery, TermsQuery, MatchQuery, MatchPhraseQuery, PrefixQuery, WildcardQuery, RangeQuery, BoolQuery, ConstScoreQuery, dan NestedQuery.
Untuk BoolQuery atau ConstScoreQuery, Anda dapat mengonfigurasi ringkasan dan penyorotan untuk bidang yang digunakan oleh kueri anak dari tujuh jenis kueri sebelumnya. Untuk NestedQuery, konfigurasikan InnerHits.highlight untuk mengembalikan hasil ringkasan dan penyorotan bagi baris anak yang sesuai. Untuk informasi selengkapnya, lihat Nested query.
-
Jika Anda menggunakan
MatchQueryatauMatchPhraseQuery, satu kata kunci yang sesuai mungkin dibungkus oleh beberapa pasang pre-tag dan post-tag. -
Jika tokenisasi semantik maksimum digunakan untuk bidang
Text,MatchPhraseQuerytidak mendukung ringkasan dan penyorotan. -
Batas fragmen mungkin memotong kata kunci yang sesuai. Dalam kasus ini, kata kunci tersebut tidak akan disorot.
Contoh berikut menggunakan kueri cocok untuk mengambil baris di mana bidang description berisi kata kunci tablestore. Contoh ini membungkus kata kunci yang sesuai dalam fragmen yang dikembalikan dengan <b> dan </b>. Bidang description merupakan bidang Text yang telah diaktifkan fitur ringkasan dan penyorotannya.
String tableName = "example_table";
String indexName = "example_index";
MatchQuery matchQuery = new MatchQuery();
matchQuery.setFieldName("description");
matchQuery.setText("tablestore");
HighlightParameter highlightParameter = new HighlightParameter();
highlightParameter.setPreTag("");
highlightParameter.setPostTag("");
Highlight highlight = new Highlight();
highlight.addFieldHighlightParam("description", highlightParameter);
SearchQuery searchQuery = new SearchQuery();
searchQuery.setQuery(matchQuery);
searchQuery.setHighlight(highlight);
searchQuery.setLimit(10);
SearchRequest request = new SearchRequest(tableName, indexName, searchQuery);
SearchResponse response = client.search(request);
for (SearchHit hit : response.getSearchHits()) {
HighlightResultItem resultItem = hit.getHighlightResultItem();
if (resultItem == null) {
continue;
}
HighlightField field = resultItem.getHighlightFieldByName("description");
if (field != null) {
System.out.println(field.getFragments());
}
}
Parameter
request.searchQuery.highlight bertipe Highlight. Nilai dalam fieldHighlightParams adalah objek HighlightParameter yang mengonfigurasi perilaku fragmen untuk masing-masing bidang.
Tabel berikut menggunakan jalur parameter lengkap untuk menjelaskan dua tingkat konfigurasi: Highlight dan HighlightParameter.
|
Nama |
Tipe |
Deskripsi |
|
fieldHighlightParams (wajib) |
|
Nama bidang dan pengaturan fragmen. Kunci adalah nama bidang yang hasil ringkasan dan penyorotannya ingin Anda kembalikan. Nilainya adalah objek |
|
highlightEncoder (opsional) |
HighlightEncoder |
Metode encoding untuk teks asli dalam fragmen yang disorot. Nilai yang valid:
|
|
fieldHighlightParams[].numberOfFragments (opsional) |
Integer |
Jumlah maksimum fragmen yang disorot yang akan dikembalikan untuk suatu bidang. Kami menyarankan Anda mengatur parameter ini ke |
|
fieldHighlightParams[].fragmentSize (opsional) |
Integer |
Panjang target setiap fragmen. Nilai default-nya adalah |
|
fieldHighlightParams[].preTag (opsional) |
String |
Pre-tag untuk kata kunci yang sesuai. Nilai default-nya adalah |
|
fieldHighlightParams[].postTag (opsional) |
String |
Post-tag untuk kata kunci yang sesuai. Nilai default-nya adalah |
|
fieldHighlightParams[].highlightFragmentOrder (opsional) |
HighlightFragmentOrder |
Urutan pengembalian beberapa fragmen yang disorot. |
Respons
Respons kueri
Metode search mengembalikan objek SearchResponse. Bidang berikut relevan dengan fitur ringkasan dan penyorotan.
|
Nama |
Tipe |
Deskripsi |
|
searchHits |
|
Hasil pencocokan kueri, yang dapat diperoleh dengan memanggil |
|
isAllSuccess |
boolean |
Menunjukkan apakah semua partisi indeks telah diinterogasi. Anda dapat memperoleh nilainya dengan memanggil |
Hasil pencocokan kueri
response.searchHits[] bertipe SearchHit. Bidang berikut relevan dengan fitur ringkasan dan penyorotan.
|
Nama |
Tipe |
Deskripsi |
|
row |
Row |
Data baris. Anda dapat memperoleh nilainya dengan memanggil |
|
highlightResultItem |
HighlightResultItem |
Hasil ringkasan dan penyorotan semua bidang dalam baris tersebut. Anda dapat memperoleh nilainya dengan memanggil |
Hasil penyorotan
response.searchHits[].highlightResultItem bertipe HighlightResultItem dan berisi bidang berikut.
|
Nama |
Tipe |
Deskripsi |
|
highlightFields |
|
Hasil penyorotan untuk bidang-bidang dalam baris tersebut. Anda dapat memperoleh map ini dengan memanggil |
Fragmen bidang
response.searchHits[].highlightResultItem.highlightFields[fieldName] bertipe HighlightField dan berisi bidang berikut.
|
Nama |
Tipe |
Deskripsi |
|
fragments |
|
Fragmen yang disorot untuk bidang tersebut. Anda dapat memperoleh daftar ini dengan memanggil |