All Products
Search
Document Center

Tablestore:Prefix query

Last Updated:May 07, 2026

Kueri awalan (PrefixQuery) menemukan baris dalam indeks pencarian yang nilai bidangnya diawali dengan string tertentu.

Ikhtisar

PrefixQuery mencocokkan nilai kolom yang diawali dengan awalan tertentu. Perilaku kueri bergantung pada tipe data kolom tersebut:

  • Keyword: Tipe data string dasar. Seiring peningkatan volume data, performa kueri menurun. Tipe ini hanya cocok untuk set data kecil.

  • FuzzyKeyword: Tipe data yang dioptimalkan untuk pencarian fuzzy seperti kueri awalan. Performa kueri tetap stabil terlepas dari volume data. Tipe ini direkomendasikan untuk sebagian besar skenario kueri awalan.

  • Text: Nilai kolom ditokenisasi sebelum diindeks. Suatu baris cocok jika setidaknya satu token hasil tokenisasi diawali dengan awalan yang ditentukan. Karena ketidakpastian tokenisasi, hasil kueri bisa tidak dapat diprediksi. Tipe data ini hanya didukung untuk tujuan kompatibilitas dan harus digunakan dengan hati-hati.

Cara memilih tipe data

Tabel berikut merangkum kesesuaian masing-masing tipe data untuk kueri awalan.

Type

Performance

Recommendation

Keyword

Degrades as data volume increases

For small datasets only

FuzzyKeyword

Stable regardless of data volume

Recommended for most scenarios

Text

Unpredictable results due to tokenization

Not recommended

Contoh pencocokan awalan

Asumsikan sebuah kolom berisi nilai-nilai berikut: hangzhou, beijing, shanghai, dan harbin.

  • Awalan hang cocok dengan hangzhou tetapi tidak cocok dengan beijing, shanghai, atau harbin.

  • Awalan ha cocok dengan hangzhou dan harbin.

API

Anda dapat melakukan kueri awalan menggunakan API Search atau ParallelScan. Jenis kuerinya adalah PrefixQuery.

Parameter

Parameter

Description

query

Jenis kueri. Atur nilai ini ke PrefixQuery.

fieldName

Nama kolom target.

prefix

String awalan yang akan dicocokkan terhadap nilai kolom.

Untuk kolom Text, nilai kolom ditokenisasi sebelum pencocokan. Suatu baris cocok jika setidaknya satu token dimulai dengan awalan yang ditentukan.

getTotalCount

Menentukan apakah jumlah total baris yang cocok dikembalikan. Nilai default-nya adalah false.

Mengatur parameter ini ke true meningkatkan latensi kueri.

weight

Bobot kueri harus berupa bilangan titik mengambang positif. Dalam skenario pencarian teks lengkap, parameter ini menyesuaikan kontribusi kolom terhadap skor relevansi BM25. Nilai yang lebih tinggi meningkatkan pengaruh kolom terhadap peringkat.

Parameter ini tidak memengaruhi set hasil yang dikembalikan, hanya skor BM25 setiap baris dalam hasil.

tableName

Nama tabel data.

indexName

Nama indeks pencarian.

columnsToGet

Menentukan kolom yang dikembalikan untuk setiap baris yang cocok. Konfigurasikan ini menggunakan parameter returnAll dan columns.

Secara default, returnAll bernilai false. Jika columns tidak diatur, hanya kolom kunci primer yang dikembalikan. Jika columns diatur, hanya kolom yang ditentukan yang dikembalikan.

Atur returnAll ke true untuk mengembalikan semua kolom.

Penggunaan

Anda dapat melakukan kueri awalan menggunakan Konsol Tablestore, tool command-line, atau SDK. Sebelum memulai, penuhi prasyarat berikut.

Penting

PrefixQuery pada kolom FuzzyKeyword saat ini hanya didukung melalui SDK Tablestore. Konsol dan tool command-line hanya mendukung kolom Keyword.

Gunakan konsol

  1. Buka tab Index Management.

    1. Login ke Table Store console.

    2. Di bilah navigasi atas, pilih kelompok sumber daya dan wilayah.

    3. Pada halaman Overview, klik nama instans atau klik Instance Management di kolom Actions.

    4. Di tab Instance Details, pada tab Data Table List, klik nama tabel data atau klik Index Management di kolom Actions.

  2. Di tab Index Management, temukan Search Index target dan klik Search di kolom Actions.

  3. Di kotak dialog Search, konfigurasikan kondisi kueri.

    1. Secara default, semua kolom dikembalikan. Untuk mengembalikan kolom tertentu, matikan Retrieve All Columns dan masukkan nama kolom, dipisahkan koma.

      Catatan

      Secara default, Table Store mengembalikan kolom kunci primer dari tabel data.

    2. Pilih operator logika: And, Or, atau Not.

      Jika Anda memilih And, kueri mengembalikan data yang memenuhi semua kondisi yang ditentukan. Jika Anda memilih Or, kueri mengembalikan data yang memenuhi setidaknya satu kondisi yang ditentukan. Jika Anda memilih Not, kueri mengembalikan data yang tidak memenuhi kondisi yang ditentukan.

    3. Pilih bidang indeks dan klik Add.

    4. Atur jenis kueri ke Prefix query (PrefixQuery) dan masukkan nilai awalan.

    5. Secara default, pengurutan dinonaktifkan. Untuk mengurutkan hasil berdasarkan bidang tertentu, aktifkan Enable Sorting, tambahkan bidang pengurutan, dan konfigurasikan urutan pengurutan.

    6. Secara default, agregasi dinonaktifkan. Untuk melakukan agregasi statistik pada bidang tertentu, aktifkan Enable Aggregation, tambahkan bidang untuk agregasi, dan konfigurasikan pengaturan agregasi.

  4. Klik OK.

    Hasil kueri ditampilkan di tab Index Management.

Gunakan alat baris perintah

Jalankan perintah search untuk mengkueri data menggunakan indeks pencarian. Untuk informasi selengkapnya, lihat Search index.

Penting

Tool command-line hanya mendukung kueri awalan pada kolom Keyword, bukan pada kolom FuzzyKeyword.

  1. Jalankan perintah search untuk mengkueri data menggunakan indeks pencarian search_index dan mengembalikan semua kolom yang diindeks.

    search -n search_index --return_all_indexed
  2. Masukkan kondisi kueri saat diminta. Kode berikut merupakan contoh:

    {
        "Offset": -1,
        "Limit": 10,
        "Collapse": null,
        "Sort": null,
        "GetTotalCount": true,
        "Token": null,
        "Query": {
            "Name": "PrefixQuery",
            "Query": {
                "FieldName": "col_keyword",
                "Prefix": "hangzhou"
            }
        }
    }

Gunakan SDK

Anda dapat melakukan kueri awalan menggunakan Java SDK, Go SDK, Python SDK, Node.js SDK, .NET SDK, atau PHP SDK. Contoh berikut menggunakan Java SDK.

Catatan

Pernyataan kueri identik untuk tipe Keyword dan FuzzyKeyword. Satu-satunya perbedaan adalah tipe data kolom yang dikueri.

Contoh berikut menunjukkan cara mengkueri data di mana nilai pada kolom Col_Keyword diawali dengan "hangzhou".

/**
 * Query for data where the value in the Col_Keyword column starts with the prefix "hangzhou".
 * @param client
 */
private static void prefixQuery(SyncClient client) {
    SearchQuery searchQuery = new SearchQuery();
    PrefixQuery prefixQuery = new PrefixQuery(); // Set the query type to PrefixQuery.
    searchQuery.setGetTotalCount(true);
    prefixQuery.setFieldName("Col_Keyword");
    prefixQuery.setPrefix("hangzhou");
    searchQuery.setQuery(prefixQuery);
    //searchQuery.setGetTotalCount(true); // Set this parameter to return the total number of matched rows.

    SearchRequest searchRequest = new SearchRequest("<TABLE_NAME>", "<SEARCH_INDEX_NAME>", searchQuery);
    // Set the columnsToGet parameter to specify the columns to return or to return all columns. If this parameter is not set, only primary key columns are returned by default.
    //SearchRequest.ColumnsToGet columnsToGet = new SearchRequest.ColumnsToGet();
    //columnsToGet.setReturnAll(true); // Set this parameter to return all columns.
    //columnsToGet.setColumns(Arrays.asList("ColName1","ColName2")); // Set this parameter to return specified columns.
    //searchRequest.setColumnsToGet(columnsToGet);

    SearchResponse resp = client.search(searchRequest);
    //System.out.println("TotalCount: " + resp.getTotalCount()); // Print the total number of matched rows, not the number of returned rows.
    System.out.println("Row: " + resp.getRows());
}

Penagihan

Mengkueri data menggunakan Search Index mengonsumsi throughput baca. Untuk informasi selengkapnya, lihat Search Index metering and billing.

FAQ

Dokumen terkait