Saat melakukan kueri data, Anda dapat mengatur parameter penyorotan untuk mengembalikan cuplikan teks yang berisi kueri pencarian dan menyoroti istilah tersebut. Fitur rangkuman dan penyorotan hanya didukung untuk bidang bertipe Text.
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 di 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 Node.js SDK, lihat Riwayat rilis Node.js SDK.
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 memisahkan 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 menyoroti kueri pencarian, seperti | |
postTag | Post-tag untuk menyoroti kueri pencarian, seperti | |
highlightFragmentOrder | Aturan pengurutan fragmen saat beberapa fragmen dikembalikan untuk bidang yang disorot.
| |
Contoh
Contoh berikut menggunakan kueri cocok untuk mengambil baris di mana bidang description berisi kata kunci tablestore. Contoh ini membungkus istilah yang cocok 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, yang berarti jumlah total tidak dikembalikan.
},
columnToGet: { // Kolom yang akan dikembalikan. Nilai yang valid: RETURN_SPECIFIED (kembalikan kolom kustom), 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.