Gunakan ringkasan dan penyorotan pada Tablestore SDK untuk Java guna mengembalikan fragmen dari bidang Teks yang berisi kata kunci yang cocok, serta menandai kata kunci tersebut dengan tag yang telah dikonfigurasi.
Prasyarat
-
Instans OTSClient telah diinisialisasi. Untuk informasi selengkapnya, lihat Inisialisasi instans OTSClient.
-
Tabel data dibuat, lalu data ditulis ke dalamnya. Untuk informasi selengkapnya, lihat Membuat tabel data dan Menulis data.
-
Indeks pencarian telah dibuat untuk tabel data tersebut. Untuk informasi selengkapnya, lihat Buat indeks pencarian.
Catatan
-
Fitur penyorotan kueri tersedia pada Tablestore Node.js Software Development Kit (SDK) versi 5.5.0 dan yang lebih baru. Pastikan Anda menggunakan versi SDK yang kompatibel. Untuk informasi selengkapnya mengenai riwayat rilis SDK Node.js, lihat Riwayat rilis SDK Node.js.
-
Saat menggunakan fitur penyorotan kueri dengan MatchQuery atau MatchPhraseQuery, kueri pencarian mungkin disorot menggunakan beberapa pre-tag dan post-tag.
-
Jika bidang Text menggunakan tokenisasi semantik maksimum, fitur penyorotan kueri tidak didukung untuk MatchPhraseQuery.
-
Kueri pencarian mungkin tidak disorot jika sharding membagi kueri tersebut di dalam teks sumber.
Parameter
|
Parameter |
Deskripsi |
|
|
highlightEncoder |
Metode pengkodean untuk konten asli fragmen yang disorot. Nilai yang valid:
|
|
|
fieldHighlightParams |
Parameter penyorotan untuk suatu bidang. Anda hanya dapat mengatur parameter ini untuk bidang yang termasuk dalam kueri kata kunci di dalam SearchQuery. |
|
|
HighlightParameter |
numberOfFragments |
Jumlah maksimum fragmen yang disorot yang akan dikembalikan. Kami merekomendasikan mengatur nilai ini ke 1. |
|
fragmentSize |
Panjang setiap fragmen. Nilai default: 100. Penting
Panjang fragmen yang dikembalikan mungkin tidak tepat sama dengan nilai ini. |
|
|
preTag |
Pre-tag untuk menyorot kueri pencarian, seperti |
|
|
postTag |
Post-tag untuk menyorot kueri pencarian, seperti |
|
|
highlightFragmentOrder |
Aturan pengurutan fragmen saat beberapa fragmen dikembalikan untuk bidang yang disorot.
|
|
Contoh
Contoh berikut menggunakan kueri cocok untuk mengambil baris yang bidang description-nya 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 rangkuman dan penyorotannya.
client.search({
tableName: "<TABLE_NAME>",
indexName: "<SEARCH_INDEX_NAME>",
searchQuery: {
offset: 0,
limit: 10, // Untuk hanya mendapatkan jumlah baris tanpa data spesifik, atur limit ke 0. Ini mencegah pengembalian baris apa pun.
query: { // Atur jenis kueri ke MatchQuery.
queryType: TableStore.QueryType.MATCH_QUERY,
query: {
fieldName: "Col_Text", // Atur kolom yang akan dicocokkan.
text: "hangzhou shanghai" // Atur nilai yang akan dicocokkan.
}
},
highlight:{
highlightEncoder:TableStore.HighlightEncoder.PLAIN_MODE,
highlightParameters:[
{
fieldName:"Col_Text",
preTag: "",
postTag: "",
fragmentsOrder: TableStore.HighlightFragmentOrder.TEXT_SEQUENCE,
fragmentSize: 20,
numberOfFragments: 3,
}
],
},
getTotalCount: true // TotalCount dalam hasil menunjukkan jumlah total baris dalam tabel. Nilai default adalah false, artinya jumlah total tidak dikembalikan.
},
columnToGet: { // Kolom yang akan dikembalikan. Nilai yang valid: RETURN_SPECIFIED (kembalikan kolom khusus), RETURN_ALL (kembalikan semua kolom), RETURN_ALL_FROM_INDEX (kembalikan semua kolom dari indeks pencarian), dan RETURN_NONE (tidak kembalikan kolom apa pun).
returnType: TableStore.ColumnReturnType.RETURN_ALL
}
}, function (err, data) {
if (err) {
console.log('error:', err);
return;
}
console.log('success:', JSON.stringify(data.rows, null, 2));
printSearchHit(data.searchHits, "");
});
/**
* Cetak konten searchHits.
* @param searchHits Hasil pencarian.
* @param prefix Awalan yang ditambahkan untuk struktur bersarang guna mencetak informasi hierarkis.
*/
function printSearchHit(searchHits, prefix) {
TableStore.util.arrayEach(searchHits, function (searchHit) {
if (searchHit.highlightResultItem != null) {
console.log(prefix + "Highlight: \n");
var strBuilder = ""
for (const [key,val] of searchHit.highlightResultItem.highlightFields.entries()) {
strBuilder += key + ":[";
strBuilder += val.fragments.join(",") + "]\n";
console.log(strBuilder);
}
}
for (const [key,val] of searchHit.searchInnerHits.entries()) {
console.log(prefix + "Path: " + key + "\n");
console.log(prefix + "InnerHit: \n");
printSearchHit(val.subSearchHits, prefix + " ");
}
});
}
Referensi
-
Untuk informasi selengkapnya tentang fitur penyorotan kueri, lihat Rangkuman dan penyorotan.
-
Untuk informasi selengkapnya tentang penggunaan fitur penyorotan kueri dengan bidang bersarang, lihat Kueri bersarang.