全部产品
Search
文档中心

Tablestore:Kueri frasa cocok

更新时间:Jul 06, 2025

Kueri frasa cocok mirip dengan kueri cocok, tetapi kueri frasa cocok mengevaluasi posisi token. Baris memenuhi kondisi kueri hanya jika urutan dan posisi token dalam baris tersebut sesuai dengan urutan dan posisi token dalam kata kunci. Jika metode tokenisasi kolom yang dikueri adalah tokenisasi fuzzy, kueri frasa cocok memiliki latensi lebih rendah dibandingkan kueri wildcard.

Prasyarat

Parameter

Parameter

Deskripsi

NamaTabel

Nama tabel data.

NamaIndeks

Nama indeks pencarian.

Kueri

Tipe kueri. Atur tipe kueri ke MatchPhraseQuery.

NamaBidang

Nama bidang yang ingin Anda cocokkan.

Anda dapat melakukan kueri frasa cocok pada kolom TEKS.

Teks

Kata kunci yang digunakan untuk mencocokkan nilai kolom saat Anda melakukan kueri frasa cocok.

Jika kolom yang ingin Anda kueri adalah kolom TEKS, kata kunci di-tokenisasi menjadi beberapa token berdasarkan tipe analisis yang Anda tentukan saat membuat indeks pencarian. Secara default, tokenisasi satu kata dilakukan jika Anda tidak menentukan analisis saat membuat indeks pencarian. Untuk informasi lebih lanjut, lihat Tokenisasi.

Sebagai contoh, jika Anda melakukan kueri frasa cocok menggunakan frase "this is", "..., this is tablestore" dan "this is a table" akan dikembalikan. "this table is ..." atau "is this a table" tidak dikembalikan.

Offset

Posisi dari mana kueri saat ini dimulai.

Batas

Jumlah maksimum baris yang ingin Anda kembalikan dalam kueri saat ini.

Untuk hanya menanyakan jumlah baris yang memenuhi kondisi kueri tanpa data spesifik, atur parameter Batas ke 0.

DapatkanJumlahTotal

Menentukan apakah akan mengembalikan jumlah total baris yang memenuhi kondisi kueri. Nilai default: false.

Jika Anda mengatur parameter ini ke true, kinerja kueri akan terpengaruh.

KolomUntukDiambil

Menentukan apakah akan mengembalikan semua kolom dari setiap baris yang memenuhi kondisi kueri. Anda dapat menentukan parameter ReturnAll dan Kolom.

Nilai default dari bidang ReturnAll adalah false,

yang menunjukkan bahwa tidak semua kolom dikembalikan. Dalam hal ini, Anda dapat menggunakan parameter Kolom untuk menentukan kolom yang ingin Anda kembalikan. Jika Anda tidak menentukan parameter Kolom, hanya kolom kunci utama yang dikembalikan.

Jika Anda mengatur ReturnAll ke true, semua kolom dikembalikan.

Contoh kode

Berikut adalah contoh kode untuk menanyakan baris di mana nilai kolom Col_Text cocok dengan frasa "hangzhou shanghai" secara berurutan dalam tabel data:

/**
 * Query the rows in which the value of the Col_Text column matches the whole phase "hangzhou shanghai" in order in a table. Tablestore returns the total number of rows that meet the query conditions and part of the matched rows. 
 */
func MatchPhraseQuery(client *tablestore.TableStoreClient, tableName string, indexName string) {
    searchRequest := &tablestore.SearchRequest{}
    searchRequest.SetTableName(tableName)
    searchRequest.SetIndexName(indexName)
    query := &search.MatchPhraseQuery{} // Set the query type to MatchPhraseQuery. 
    query.FieldName = "Col_Text"  // Specify the name of the column that you want to query. 
    query.Text = "hangzhou shanghai"  // Specify the keyword that is used to match the value of the column. 
    searchQuery := search.NewSearchQuery()
    searchQuery.SetQuery(query)
    searchQuery.SetGetTotalCount(true) 
    searchQuery.SetOffset(0) // Set the Offset parameter to 0. 
    searchQuery.SetLimit(20) // Set the Limit parameter to 20, which indicates a maximum of 20 rows can be returned. 
    searchRequest.SetSearchQuery(searchQuery)
    searchResponse, err := client.Search(searchRequest)
    if err != nil {
        fmt.Printf("%#v", err)
        return
    }
    fmt.Println("IsAllSuccess: ", searchResponse.IsAllSuccess) // Check whether all rows that meet the query conditions are returned. 
    fmt.Println("TotalCount: ", searchResponse.TotalCount) // Display the total number of rows that meet the query conditions. 
    fmt.Println("RowCount: ", len(searchResponse.Rows))
    for _, row := range searchResponse.Rows {
        jsonBody, err := json.Marshal(row)
        if err != nil {
            panic(err)
        }
        fmt.Println("Row: ", string(jsonBody))
    }
    // Return all columns in the rows that meet the query conditions. 
    searchRequest.SetColumnsToGet(&tablestore.ColumnsToGet{
        ReturnAll:true,
    })
    searchResponse, err = client.Search(searchRequest)
    if err != nil {
        fmt.Printf("%#v", err)
        return
    }
    fmt.Println("IsAllSuccess: ", searchResponse.IsAllSuccess) // Check whether all rows that meet the query conditions are returned. 
    fmt.Println("TotalCount: ", searchResponse.TotalCount) // Display the total number of rows that meet the query conditions. 
    fmt.Println("RowCount: ", len(searchResponse.Rows))
    for _, row := range searchResponse.Rows {
        jsonBody, err := json.Marshal(row)
        if err != nil {
            panic(err)
        }
        fmt.Println("Row: ", string(jsonBody))
    }
}

FAQ

Referensi