All Products
Search
Document Center

Tablestore:Urutkan dan lakukan paginasi hasil

Last Updated:Aug 12, 2026

Gunakan Tablestore SDK untuk Go guna mengurutkan hasil berdasarkan nilai bidang, skor relevansi, kunci primer, atau jarak geografis, serta melakukan paginasi menggunakan token.

Prasyarat

Instal Tablestore Go SDK dan inisialisasi client.

Deskripsi

Anda dapat mengonfigurasi satu atau beberapa sorter. Hasil dibandingkan sesuai urutan daftar sorter tersebut. Jika tidak ada sorter yang dikonfigurasi, sistem akan menggunakan IndexSort yang ditetapkan saat pembuatan indeks pencarian. Apabila IndexSort tidak dikonfigurasi, pengurutan berdasarkan kunci primer digunakan secara default. IndexSort hanya mendukung PrimaryKeySort dan FieldSort. Setelah indeks dibuat, Anda dapat mengubah IndexSort melalui modifikasi skema secara dinamis. ScoreSort mengurutkan berdasarkan skor relevansi BM25 dan hanya berlaku jika dikonfigurasi secara eksplisit.

Penting
  • Saat sorter non-primary-key ditentukan, server secara default menambahkan sorter kunci primer agar baris dengan nilai sort yang sama memiliki urutan deterministik. Nilai default DisableDefaultPkSorter adalah false. Jangan nonaktifkan perilaku ini untuk paginasi berbasis token. Jika nilai sort diduplikasi dan pengurutan kunci primer dinonaktifkan, beberapa baris mungkin terlewat.

  • Indeks pencarian yang berisi bidang Nested tidak mendukung IndexSort. Untuk melakukan paginasi kueri pada indeks semacam ini, konfigurasikan pengurutan secara eksplisit dalam permintaan kueri. Jika tidak, server tidak akan mengembalikan NextToken meskipun masih terdapat data tambahan.

  • Saat menggunakan ScoreSort, bidang FuzzyKeyword tidak ikut dalam pengurutan, dan Weight tidak memengaruhi bidang FuzzyKeyword.

searchQuery := search.NewSearchQuery().
    SetQuery(&search.MatchAllQuery{}).
    SetLimit(10).
    SetSort(&search.Sort{Sorters: []search.Sorter{
        &search.FieldSort{
            FieldName: "price",
            Order:     search.SortOrder_DESC.Enum(),
        },
    }})

for {
    response, err := client.Search(&tablestore.SearchRequest{
        TableName:   "example_table",
        IndexName:   "example_index",
        SearchQuery: searchQuery,
    })
    if err != nil {
        log.Fatal(err)
    }

    for _, row := range response.Rows {
        fmt.Println(row)
    }
    if len(response.NextToken) == 0 {
        break
    }
    searchQuery.SetToken(response.NextToken)
}

Parameter

Konfigurasi pengurutan

Name

Type

Description

Sorters (required)

[]search.Sorter

Sorter yang digunakan. FieldSort, ScoreSort, PrimaryKeySort, dan GeoDistanceSort didukung dan diterapkan sesuai urutan dalam daftar. DocSort hanya dapat dikonfigurasi secara eksplisit dalam NestedQuery.InnerHits dan tidak dapat digunakan sebagai sorter tingkat atas pada Search.

DisableDefaultPkSorter (optional)

*bool

Menentukan apakah akan menonaktifkan sorter kunci primer yang ditambahkan oleh server. Nilai default: false. Parameter ini didukung oleh Tablestore SDK untuk Go versi 1.7.16 ke atas.

Pengurutan berdasarkan nilai bidang

Name

Type

Description

FieldName (required)

string

Bidang yang digunakan untuk pengurutan. Pengurutan dan agregasi harus diaktifkan untuk bidang tersebut.

Order (optional)

*search.SortOrder

Urutan pengurutan. Nilai yang valid adalah search.SortOrder_ASC dan search.SortOrder_DESC. Nilai default: ascending.

Mode (optional)

*search.SortMode

Metode pemilihan nilai untuk bidang multi-nilai. Nilai yang valid adalah search.SortMode_Min, search.SortMode_Max, dan search.SortMode_Avg.

NestedFilter (optional)

*search.NestedFilter

Konfigurasi pengurutan untuk bidang turunan Nested. Tentukan parameter ini hanya saat Anda mengurutkan berdasarkan bidang turunan Nested.

MissingValue (optional)

interface{}

Nilai pengurutan yang digunakan ketika semua bidang yang ditentukan oleh FieldName dan MissingFields tidak tersedia. search.FirstWhenMissing menempatkan nilai yang hilang di awal terlepas dari urutan pengurutan. search.LastWhenMissing atau nil menempatkannya di akhir. Anda juga dapat menentukan nilai kustom bertipe sama dengan bidang tersebut untuk pengurutan.

MissingField (optional)

*string

Bidang pengurutan cadangan. Parameter ini sudah tidak digunakan lagi. Gunakan MissingFields.

MissingFields (optional)

[]string

Bidang pengurutan cadangan. Jika bidang yang ditentukan oleh FieldName tidak tersedia, bidang pertama yang tersedia dalam urutan daftar digunakan untuk pengurutan. Anda dapat menentukan hingga tiga bidang. Semua bidang tersebut harus memiliki tipe yang sama dengan bidang yang ditentukan oleh FieldName, serta pengurutan dan agregasi harus diaktifkan untuk semua bidang. Parameter ini didukung oleh Tablestore SDK untuk Go versi 1.9.0 ke atas.

Nested filter

Name

Type

Description

Path (required)

string

Jalur bidang Nested.

Filter (required)

search.Query

Kueri yang memfilter baris turunan Nested yang digunakan untuk pengurutan. Gunakan MatchAllQuery untuk menyertakan semua baris turunan.

Pengurutan berdasarkan skor, kunci primer, dan urutan dokumen

Name

Type

Description

ScoreSort.Order (optional)

*search.SortOrder

Urutan skor relevansi BM25. search.NewScoreSort() secara default mengurutkan skor dalam urutan menurun.

PrimaryKeySort.Order (optional)

*search.SortOrder

Urutan kunci primer. search.NewPrimaryKeySort() secara default mengurutkan kunci primer dalam urutan naik.

DocSort.SortOrder (optional)

*search.SortOrder

Urutan dokumen dalam NestedQuery.InnerHits. Nilai default: ascending. DocSort didukung oleh Tablestore SDK untuk Go versi 1.7.12 ke atas.

Pengurutan berdasarkan jarak geografis

Name

Type

Description

FieldName (required)

string

Nama bidang Geo-point.

Points (required)

[]string

Titik target yang digunakan untuk menghitung jarak. Gunakan format latitude,longitude. Latitude berkisar antara [-90,+90], dan longitude berkisar antara [-180,+180]. Contoh: 35.8,-45.91.

Order (optional)

*search.SortOrder

Urutan pengurutan jarak. search.SortOrder_ASC mengurutkan dari terdekat ke terjauh, sedangkan search.SortOrder_DESC mengurutkan dari terjauh ke terdekat.

Mode (optional)

*search.SortMode

Metode pemilihan nilai saat terdapat beberapa jarak. Nilai yang valid adalah search.SortMode_Min, search.SortMode_Max, dan search.SortMode_Avg.

GeoDistanceType (optional)

*search.GeoDistanceType

Metode perhitungan jarak. search.GeoDistanceType_ARC menghitung jarak pada bola dan memberikan akurasi lebih tinggi. search.GeoDistanceType_PLANE menghitung jarak pada bidang datar dan menggunakan lebih sedikit sumber daya. Nilai default: ARC.

NestedFilter (optional)

*search.NestedFilter

Jalur dan filter yang digunakan untuk mengurutkan bidang turunan Nested.

Konfigurasi paginasi

Name

Type

Description

Limit (optional)

int32

Jumlah maksimum baris per halaman. Nilai default: 10. Batas maksimum biasanya 100. Jika semua kolom yang dikembalikan disimpan dalam indeks pencarian, batas maksimum dapat ditingkatkan hingga 1.000. Untuk informasi selengkapnya, lihat Bagaimana cara meningkatkan batas kueri indeks pencarian menjadi 1.000?. Untuk paginasi berbasis offset, Offset + Limit tidak boleh melebihi 100.000.

Offset (optional)

int32

Posisi awal. Nilai default: 0. Gunakan parameter ini untuk paginasi dangkal dalam rentang 100.000 baris.

Token (optional)

[]byte

Nilai NextToken dari respons sebelumnya. Gunakan parameter ini untuk paginasi dalam berturut-turut. SetToken menghapus Sort karena token berisi kondisi pengurutan halaman sebelumnya. Jangan tentukan Offset untuk paginasi berbasis token. Encode token biner dalam Base64 untuk persistensi atau transmisi melalui protokol teks atau lintas proses.

Paginasi berbasis token secara default hanya bergerak maju. Untuk kembali ke halaman sebelumnya, simpan dan gunakan kembali token sebelumnya. Paginasi berbasis token tidak terikat oleh batas kedalaman 100.000 baris.

Respons

Name

Type

Description

Rows

[]*tablestore.Row

Baris yang dikembalikan oleh kueri saat ini. Jumlahnya tidak melebihi Limit.

SearchHits

[]*tablestore.SearchHit

Hasil pencarian. Baca bidang ini saat Anda menggunakan skor relevansi, penyorotan, atau Nested InnerHits.

TotalCount

int64

Jumlah total baris yang cocok. Nilainya bergantung pada SetGetTotalCount dan bukan jumlah baris pada halaman saat ini.

NextToken

[]byte

Token untuk halaman berikutnya. Nilai kosong menunjukkan bahwa tidak ada data tambahan atau kueri saat ini tidak memiliki urutan pengurutan deterministik.

IsAllSuccess

bool

Menunjukkan apakah semua partisi indeks telah dikueri. Jika nilainya false, hasil parsial dikembalikan.