全部产品
Search
文档中心

Tablestore:Sorot hasil query

更新时间:Jul 06, 2025

Ketika Anda menginisiasi 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

Catatan penggunaan

  • Jika Anda mengaktifkan fitur sorot dalam query cocok atau query frase cocok, string query dalam hasil query mungkin disorot menggunakan beberapa tag pembuka (preTag) dan tag penutup (postTag).

  • Jika metode tokenisasi dari bidang Teks adalah tokenisasi berbasis unit semantik maksimum (MaxWord), fitur sorot tidak didukung ketika Anda melakukan query frase cocok pada bidang Teks.

  • Jika Anda ingin mengembalikan beberapa fragmen, string query dalam fragmen tersebut mungkin terpisah. Dalam hal ini, string query mungkin tidak disorot.

Parameter

Parameter

Deskripsi

HighlightEncoder

Metode pengkodean fragmen teks yang disorot. Nilai valid:

  • PLAIN (default): menampilkan fragmen teks yang disorot tanpa perlu pengkodean.

  • HTML: melakukan pengkodean HTML pada fragmen teks yang disorot. Setelah pengkodean HTML selesai, < dikonversi menjadi &lt;, > menjadi &gt;, " menjadi &quot;, ' menjadi &#x27;, dan / menjadi &#x2F;. Jika Anda ingin menampilkan halaman web, kami sarankan Anda menggunakan format HTML.

FieldHighlightParams

Pengaturan sorotan 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 yang ingin Anda kembalikan. Kami sarankan Anda mengatur parameter ini ke 1.

FragmentSize

Panjang setiap fragmen teks yang ingin Anda kembalikan. Nilai default: 100.

Penting

Panjang aktual fragmen teks yang dikembalikan mungkin berbeda dari nilai parameter ini.

PreTag

Tag pembuka yang digunakan untuk menyorot kata kunci query. Contoh: <em> dan <b>. Nilai default: <em>. Anda dapat menentukan tag pembuka sesuai dengan kebutuhan bisnis Anda. Parameter preTag mendukung set karakter berikut: < > " ' /, a-z, A-Z, dan 0-9.

PostTag

Tag penutup yang digunakan untuk menyorot kata kunci query. Contoh: </em> dan </b>. Nilai default: <em>. Anda dapat menentukan tag penutup sesuai dengan kebutuhan bisnis Anda. Parameter postTag mendukung set karakter berikut: < > " ' /, a-z, A-Z, dan 0-9.

HighlightFragmentOrder

Aturan pengurutan fragmen teks yang disorot yang ingin Anda kembalikan.

  • TEXT_SEQUENCE (default): Fragmen teks yang disorot diurutkan berdasarkan urutan kemunculannya dalam teks asli.

  • SCORE: Fragmen teks yang disorot diurutkan berdasarkan skor kata kunci yang cocok.

Contoh

Kode sampel berikut memberikan contoh 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.

func MatchQuerywithHighlight(client *tablestore.TableStoreClient, tableName string, indexName string) {
    searchRequest := &tablestore.SearchRequest{}
    searchRequest.SetTableName(tableName)
    searchRequest.SetIndexName(indexName)
    query := &search.MatchQuery{} // Atur tipe query ke MatchQuery. 
    query.FieldName = "Col_Text"  // Tentukan bidang yang ingin Anda cocokkan. 
    query.Text = "hangzhou shanghai"  // Tentukan kata kunci yang ingin Anda cocokkan. 
    searchQuery := search.NewSearchQuery()
    searchQuery.SetQuery(query)
    highlight := &search.Highlight{
        FieldHighlightParameters: map[string]*search.HighlightParameter{
            "Col_Text": {
                NumberOfFragments: proto.Int32(5),
                PreTag:            proto.String(""),
            },
        },
    }
    searchQuery.SetHighlight(highlight)
    searchQuery.SetGetTotalCount(true)
    searchQuery.SetOffset(0) // Atur parameter Offset ke 0. 
    searchQuery.SetLimit(20) // Atur parameter Limit ke 20, yang menentukan bahwa hingga 20 baris dapat dikembalikan. 
    searchRequest.SetSearchQuery(searchQuery)
    // Tentukan bahwa semua bidang dalam indeks pencarian dikembalikan. 
    searchRequest.SetColumnsToGet(&tablestore.ColumnsToGet{
        ReturnAllFromIndex: true,
    })

    if resp, err := client.Search(searchRequest); err != nil {
        fmt.Println("Highlighting query gagal dengan err: ", err)
    } else {
        fmt.Println("RequestId: " + resp.RequestId)
        // Tampilkan hasil query yang disorot. Ketika Anda menanyakan bidang non-Nested, Anda dapat mengatur parameter padding ke null. 
        printSearchHit(resp.SearchHits, " ")
    }
    fmt.Println("highlight query selesai")
}

/**
 * Tampilkan konten yang memenuhi kondisi query. 
 * @param searchHits searchHits
 * Jika output menggunakan struktur Nested dengan awalan @param, tambahkan awalan untuk menampilkan informasi hierarki. 
 */
func printSearchHit(searchHits []*tablestore.SearchHit, padding string) {
    for _, searchHit := range searchHits {
        if searchHit.Score != nil {
            fmt.Printf("%sScore: %f\n", padding, *searchHit.Score)
        }

        if searchHit.Row != nil {
            jsonBody, err := json.Marshal(*searchHit.Row)
            if err != nil {
                panic(err)
            }
            fmt.Println("Row: ", string(jsonBody))
        }

        if searchHit.HighlightResultItem != nil && len(searchHit.HighlightResultItem.HighlightFields) != 0 {
            fmt.Printf("%sHighlight: \n", padding)
            for colName, highlightResult := range searchHit.HighlightResultItem.HighlightFields {
                fmt.Printf("%sColumnName: %s, Highlight_Fragments: %v\n", padding+padding, colName, highlightResult.Fragments)
            }
        }

        fmt.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.