Ketika Anda mengirimkan permintaan query, Anda dapat mengaktifkan fitur sorot. Dalam hal ini, kata kunci dalam hasil yang memenuhi kondisi query akan disorot. Hanya bidang Teks yang mendukung fitur sorot.
Prasyarat
Klien Tablestore telah diinisialisasi. Untuk informasi lebih lanjut, lihat Inisialisasi Klien Tablestore.
Tabel data telah dibuat dan data telah ditulis ke tabel. Untuk informasi lebih lanjut, lihat Buat Tabel Data dan Tulis Data.
Indeks pencarian telah dibuat untuk tabel data. Untuk informasi lebih lanjut, lihat Buat Indeks Pencarian.
Catatan penggunaan
Jika Anda mengaktifkan fitur sorot dalam query cocok atau query frasa cocok, string query dalam hasil query mungkin disorot menggunakan beberapa tag pembuka (preTag) dan tag penutup (postTag).
Jika metode tokenisasi untuk bidang Teks adalah tokenisasi berbasis unit semantik maksimum (MaxWord), fitur sorot tidak didukung ketika Anda melakukan query frasa cocok pada bidang Teks.
Jika Anda ingin mengembalikan beberapa fragmen, string query dalam fragmen tersebut mungkin terpecah. Dalam hal ini, string query mungkin tidak disorot.
Parameter
Parameter | Deskripsi | |
highlightEncoder | Metode pengkodean fragmen teks yang disorot. Nilai valid:
| |
fieldHighlightParams | Pengaturan sorot untuk bidang. Anda hanya dapat mengaktifkan fitur sorot untuk bidang yang berisi kata kunci yang ditentukan dalam objek SearchQuery. | |
HighlightParameter | numberOfFragments | Jumlah maksimum fragmen teks yang disorot untuk dikembalikan. Kami sarankan Anda mengatur nilainya menjadi 1. |
fragmentSize | Panjang setiap fragmen teks untuk dikembalikan. Nilai default: 100. Penting Panjang aktual dari fragmen teks yang dikembalikan mungkin berbeda dari nilai parameter ini. | |
preTag | Tag pembuka yang digunakan untuk menyorot kata kunci query. Contoh: | |
postTag | Tag penutup yang digunakan untuk menyorot kata kunci query. Contoh: | |
highlightFragmentOrder | Aturan pengurutan fragmen teks yang disorot untuk dikembalikan.
| |
Contoh
Berikut ini adalah contoh kode sampel tentang cara menggunakan fitur MatchQuery untuk menanyakan data yang cocok dengan hangzhou shanghai dari bidang Col_Text dan menyorot kata kunci dalam hasil query. Dalam contoh ini, bidang Col_Text bertipe Teks.
/**
* Aktifkan fitur sorot untuk kata kunci dalam objek MatchQuery.
*/
public static void matchQueryWithHighlighting(SyncClient client) {
SearchRequest searchRequest = SearchRequest.newBuilder()
.tableName("<TABLE_NAME>")
.indexName("<SEARCH_INDEX_NAME>")
.returnAllColumnsFromIndex(true)
.searchQuery(SearchQuery.newBuilder()
.limit(5)
.query(QueryBuilders.bool()
.should(QueryBuilders.match("Col_Text", "hangzhou shanghai")))
.highlight(Highlight.newBuilder()
.addFieldHighlightParam("Col_Text", HighlightParameter.newBuilder()
.highlightFragmentOrder(HighlightFragmentOrder.TEXT_SEQUENCE)
.preTag("")
.build())
.build())
.build())
.build();
SearchResponse resp = client.search(searchRequest);
// Tampilkan hasil query yang disorot. Saat Anda menanyakan bidang non-Nested, atur parameter prefix ke null.
printSearchHit(resp.getSearchHits(), "");
}
/**
* Tampilkan konten yang memenuhi kondisi query.
* @param searchHits searchHits
* Jika output menggunakan struktur Nested dengan @param prefix, tambahkan prefix untuk menampilkan informasi hierarki.
*/
private static void printSearchHit(List<SearchHit> searchHits, String prefix) {
for (SearchHit searchHit : searchHits) {
if (searchHit.getScore() != null) {
System.out.printf("%s Skor: %s\n", prefix, searchHit.getScore());
}
if (searchHit.getOffset() != null) {
System.out.printf("%s Offset: %s\n", prefix, searchHit.getOffset());
}
if (searchHit.getRow() != null) {
System.out.printf("%s Baris: %s\n", prefix, searchHit.getRow().toString());
}
// Tampilkan fragmen yang disorot untuk setiap bidang.
if (searchHit.getHighlightResultItem() != null) {
System.out.printf("%s Sorot: \n", prefix);
StringBuilder strBuilder = new StringBuilder();
for (Map.Entry<String, HighlightField> entry : searchHit.getHighlightResultItem().getHighlightFields().entrySet()) {
strBuilder.append(entry.getKey()).append(":").append("[");
strBuilder.append(StringUtils.join(",", entry.getValue().getFragments())).append("]\n");
}
System.out.printf("%s %s", prefix, strBuilder);
}
System.out.println();
}
}Referensi
Untuk informasi tentang fitur highlight, lihat Highlight Keywords.
Untuk informasi tentang cara menggunakan fitur highlight saat Anda membuat kueri pada Nested fields, lihat Nested Query.