全部产品
Search
文档中心

Tablestore:Highlighting

更新时间:Feb 02, 2026

Ketika melakukan kueri data, Anda dapat mengatur parameter highlighting untuk menampilkan snippet teks yang mengandung kueri pencarian dan meng-highlight kueri tersebut. Fitur highlighting hanya didukung untuk field bertipe text.

Prasyarat

Catatan penggunaan

  • Fitur highlighting didukung di Tablestore SDK untuk Node.js V5.5.0 dan versi yang lebih baru. Sebelum menggunakan fitur highlighting, pastikan Anda menggunakan Tablestore SDK untuk Node.js V5.5.0 atau versi yang lebih baru. Untuk informasi selengkapnya tentang riwayat versi Tablestore SDK untuk Node.js, lihat Riwayat versi Tablestore SDK untuk Node.js.

  • Jika Anda mengaktifkan fitur highlighting pada match query atau match phrase query, string kueri dalam hasil kueri dapat di-highlight menggunakan beberapa opening tag (preTag) dan closing tag (postTag).

  • Jika metode tokenisasi field text merupakan tokenisasi berbasis unit semantik maksimum (MaxWord), fitur highlighting tidak didukung ketika Anda melakukan match phrase query pada field text.

  • Jika Anda ingin menampilkan beberapa fragment, string kueri dalam fragment dapat terpisah. Dalam hal ini, string kueri mungkin tidak di-highlight.

Parameter

Parameter

Deskripsi

highlightEncoder

Metode encoding untuk fragment teks yang di-highlight. Nilai valid:

  • PLAIN_MODE: Menampilkan fragment teks yang di-highlight tanpa encoding. Ini merupakan nilai default.

  • HTML_MODE: Melakukan HTML encoding pada fragment teks yang di-highlight. Setelah HTML encoding selesai, < dikonversi menjadi &lt;, > menjadi &gt;, " menjadi &quot;, ' menjadi &#x27;, dan / menjadi &#x2F;. Jika Anda ingin menampilkan halaman web, sebaiknya gunakan format HTML.

fieldHighlightParams

Pengaturan highlighting untuk field. Anda hanya dapat mengonfigurasi parameter ini untuk field yang berisi string kueri yang ditentukan dalam objek SearchQuery.

HighlightParameter

numberOfFragments

Jumlah maksimum fragment teks yang di-highlight yang ingin Anda tampilkan. Sebaiknya atur parameter ini menjadi 1.

fragmentSize

Panjang setiap fragment teks yang ingin Anda tampilkan. Nilai default: 100.

Penting

Panjang asli fragment teks yang ditampilkan mungkin berbeda dengan nilai parameter ini.

preTag

Opening tag yang ingin Anda gunakan untuk meng-highlight string kueri. Contoh: <em> dan <b>. Nilai default: <em>. Anda dapat menentukan opening tag kustom sesuai kebutuhan bisnis. Parameter preTag mendukung character set berikut: < > " ' /, a-z, A-Z, dan 0-9.

postTag

Closing tag yang ingin Anda gunakan untuk meng-highlight string kueri. Contoh: </em> dan </b>. Nilai default: </em>. Anda dapat menentukan closing tag kustom sesuai kebutuhan bisnis. Parameter postTag mendukung character set berikut: < > " ' /, a-z, A-Z, dan 0-9.

highlightFragmentOrder

Aturan sorting untuk fragment teks yang di-highlight yang ingin Anda tampilkan.

  • TEXT_SEQUENCE: Fragment teks yang di-highlight diurutkan berdasarkan urutan dalam teks awal. Ini merupakan nilai default.

  • SCORE: Fragment teks yang di-highlight diurutkan berdasarkan score dari hit string kueri.

Contoh

Contoh berikut menunjukkan cara menggunakan MatchQuery untuk menemukan data di mana kolom Col_Text sama dengan hangzhou shanghai dan cara meng-highlight kueri pencarian dalam hasil. Kolom Col_Text bertipe Text.

client.search({
    tableName: "<TABLE_NAME>",
    indexName: "<SEARCH_INDEX_NAME>",
    searchQuery: {
        offset: 0,
        limit: 10, // Untuk hanya mengambil jumlah row tanpa data spesifik, atur limit menjadi 0. 
        query: { // Atur query type menjadi MatchQuery. 
            queryType: TableStore.QueryType.MATCH_QUERY,
            query: {
                fieldName: "Col_Text", // Tentukan field yang ingin Anda cocokkan. 
                text: "hangzhou shanghai" // Tentukan string kueri yang ingin Anda cocokkan. 
            }
        },
        highlight:{
            highlightEncoder:TableStore.HighlightEncoder.PLAIN_MODE,
            highlightParameters:[
                {
                    fieldName:"Col_Text",
                    preTag: "",
                    postTag: "",
                    fragmentsOrder: TableStore.HighlightFragmentOrder.TEXT_SEQUENCE,
                    fragmentSize: 20,
                    numberOfFragments: 3,
                }
                
            ],
        },
        getTotalCount: true // Tentukan apakah akan menampilkan total jumlah row yang memenuhi kondisi kueri. Nilai default: false. 
    },
    columnToGet: { // Tentukan kolom yang ingin Anda tampilkan. Anda dapat mengatur parameter menjadi RETURN_SPECIFIED untuk menampilkan kolom tertentu, RETURN_ALL untuk menampilkan semua kolom, RETURN_ALL_FROM_INDEX untuk menampilkan semua kolom dari search index, atau RETURN_NONE untuk hanya menampilkan kolom primary key. 
        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, "");
});


/**
 * Menampilkan konten yang memenuhi kondisi kueri.
 * @param searchHits searchHits
 * Jika output menggunakan @param prefix struktur Nested, tambahkan prefix untuk menampilkan informasi hierarki.
 */
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 tentang fitur highlighting, lihat Highlighting.

  • Untuk informasi tentang cara menggunakan fitur highlighting ketika melakukan kueri nested field, lihat Nested query.