全部产品
Search
文档中心

Tablestore:Kueri awalan

更新时间:Jul 06, 2025

Anda dapat menggunakan kueri awalan untuk menanyakan data dalam indeks dengan menentukan awalan tertentu.

Deskripsi

Kueri awalan digunakan untuk menanyakan data yang dimulai dengan string tertentu. Saat menjalankan kueri ini, Anda harus menentukan awalan.

Kueri awalan mendukung tipe data Keyword, FuzzyKeyword, dan Text.

  • Keyword: Tipe data String dasar. Performa kueri fuzzy seperti kueri awalan pada volume data sedang atau besar cenderung buruk karena performa menurun seiring bertambahnya ukuran data.

  • FuzzyKeyword: Tipe data yang dioptimalkan untuk kueri fuzzy seperti kueri awalan. Performanya tinggi dan stabil untuk berbagai ukuran data, tanpa penurunan signifikan seiring pertumbuhan data.

  • Text: Jika kolom yang digunakan untuk kondisi awalan adalah tipe Text, kolom tersebut akan di-tokenisasi. Baris memenuhi kondisi kueri jika setidaknya satu token mengandung awalan yang ditentukan. Karena ketidakpastian tokenisasi, kueri awalan jarang digunakan untuk tipe data Text. Tipe ini hanya didukung untuk kompatibilitas dan harus digunakan dengan hati-hati.

Operasi API

Anda dapat memanggil operasi Search atau ParallelScan, serta mengatur jenis kueri ke PrefixQuery, untuk menjalankan kueri awalan.

Parameter

Parameter

Deskripsi

kueri

Jenis kueri. Atur parameter kueri ke PrefixQuery.

fieldName

Nama kolom yang ingin Anda tanyakan.

awalan

Awalan.

Jika kolom yang digunakan untuk mencocokkan kondisi awalan adalah kolom Text, kolom tersebut akan di-tokenisasi. Sebuah baris memenuhi kondisi kueri ketika setidaknya satu token mengandung awalan yang ditentukan.

getTotalCount

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

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

bobot

Bobot yang ingin Anda tetapkan pada kolom yang ingin Anda tanyakan untuk menghitung skor relevansi kata kunci berbasis BM25. Parameter ini digunakan dalam skenario pencarian teks lengkap. Bobot yang lebih tinggi menghasilkan skor relevansi kata kunci berbasis BM25 yang lebih tinggi untuk kolom tersebut. Nilai parameter ini adalah bilangan titik mengambang positif.

Parameter ini tidak memengaruhi jumlah baris yang dikembalikan. Namun, parameter ini memengaruhi skor relevansi kata kunci berbasis BM25 dari hasil kueri.

tableName

Nama tabel data.

indexName

Nama indeks pencarian.

columnsToGet

Menentukan apakah akan mengembalikan semua kolom dari setiap baris yang memenuhi kondisi kueri. Anda dapat mengonfigurasi parameter returnAll dan columns untuk parameter ini.

Nilai default dari parameter returnAll adalah false, yang menentukan bahwa tidak semua kolom dikembalikan. Dalam hal ini, Anda dapat menggunakan parameter columns untuk menentukan kolom yang ingin Anda kembalikan. Jika Anda tidak menentukan kolom yang ingin Anda kembalikan, hanya kolom kunci utama yang dikembalikan.

Jika Anda mengatur parameter returnAll ke true, semua kolom dikembalikan.

Metode

Anda dapat menggunakan konsol Tablestore, CLI Tablestore, atau SDK Tablestore untuk menjalankan kueri awalan. Pastikan persiapan berikut telah dilakukan:

Penting

Hanya SDK Tablestore yang mendukung kueri awalan pada data tipe FuzzyKeyword.

Gunakan Konsol Tablestore

  1. Pergi ke tab Indexes.

    1. Masuk ke konsol Tablestore.

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

    3. Di halaman Overview, klik nama instance yang ingin dikelola atau pilih Manage Instance di kolom Actions.

    4. Di tab Tables dari halaman Instance Details, klik nama tabel data atau pilih Indexes di kolom Tindakan tabel data.

  2. Di tab Indexes, temukan indeks pencarian yang ingin digunakan dan klik Manage Data di kolom Actions.

  3. Di kotak dialog Search, tentukan kondisi kueri.

    1. Secara default, sistem mengembalikan semua kolom atribut. Untuk mengembalikan kolom atribut tertentu, matikan All Columns dan tentukan kolom atribut yang ingin dikembalikan. Pisahkan beberapa kolom atribut dengan koma (,).

      Catatan

      Secara default, sistem mengembalikan semua kolom kunci utama dari tabel data.

    2. Pilih operator logika And, Or, atau Not sesuai kebutuhan bisnis Anda.

      Jika memilih operator logika And, data yang memenuhi kondisi kueri akan dikembalikan. Jika memilih operator Or dan menentukan satu kondisi kueri, data yang memenuhi kondisi tersebut akan dikembalikan. Jika memilih operator Not, data yang tidak memenuhi kondisi kueri akan dikembalikan.

    3. Pilih bidang dan klik Add.

    4. Atur parameter Jenis Kueri ke PrefixQuery(PrefixQuery) dan masukkan nilai yang ingin ditanyakan.

    5. Secara default, fitur pengurutan dinonaktifkan. Jika ingin mengurutkan hasil kueri berdasarkan bidang tertentu, aktifkan Sort dan tentukan bidang serta urutan pengurutan.

    6. Secara default, fitur agregasi dinonaktifkan. Jika ingin mengumpulkan statistik pada bidang tertentu, aktifkan Collect Statistics, tentukan bidang yang ingin dianalisis, dan konfigurasikan informasi yang diperlukan.

  4. Klik OK.

    Data yang memenuhi kondisi kueri akan ditampilkan dalam urutan yang ditentukan di tab Indexes.

Gunakan CLI Tablestore

Anda dapat menggunakan CLI Tablestore untuk menjalankan perintah search guna menanyakan data menggunakan indeks pencarian. Untuk informasi lebih lanjut, lihat Indeks pencarian.

Penting

CLI Tablestore hanya mendukung kueri awalan pada data tipe Keyword, tetapi tidak pada tipe FuzzyKeyword.

  1. Jalankan perintah search untuk menggunakan indeks pencarian search_index dalam menanyakan data dan mengembalikan semua kolom terindeks dari baris yang memenuhi kondisi kueri.

    search -n search_index --return_all_indexed
  2. Masukkan kondisi kueri sesuai petunjuk sistem:

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

Gunakan SDK Tablestore

Anda dapat menggunakan SDK Tablestore berikut untuk menjalankan kueri awalan: SDK Tablestore untuk Java, SDK Tablestore untuk Go, SDK Tablestore untuk Python, SDK Tablestore untuk Node.js, SDK Tablestore untuk .NET, dan SDK Tablestore untuk PHP. Contoh ini menggunakan SDK Tablestore untuk Java.

Catatan

Pernyataan kueri dalam kueri wildcard pada data tipe Keyword sama dengan pernyataan kueri pada data tipe FuzzyKeyword, namun tipe bidang yang ingin ditanyakan berbeda.

Contoh kode berikut menunjukkan cara menanyakan baris di mana nilai kolom Col_Keyword mengandung awalan "hangzhou" dalam sebuah tabel:

/**
 * Cari tabel untuk baris di mana nilai Col_Keyword mengandung awalan "hangzhou".
 * @param client
 */
private static void prefixQuery(SyncClient client) {
    SearchQuery searchQuery = new SearchQuery();
    PrefixQuery prefixQuery = new PrefixQuery(); // Atur jenis kueri ke PrefixQuery.
    searchQuery.setGetTotalCount(true);
    prefixQuery.setFieldName("Col_Keyword");
    prefixQuery.setPrefix("hangzhou");
    searchQuery.setQuery(prefixQuery);
    //searchQuery.setGetTotalCount(true); // Tentukan bahwa jumlah total baris yang cocok dikembalikan.

    SearchRequest searchRequest = new SearchRequest("<TABLE_NAME>", "<SEARCH_INDEX_NAME>", searchQuery);
    // Anda dapat mengonfigurasi parameter columnsToGet untuk menentukan kolom yang dikembalikan atau menentukan bahwa semua kolom dikembalikan. Jika Anda tidak mengonfigurasi parameter ini, hanya kolom kunci utama yang dikembalikan.
    //SearchRequest.ColumnsToGet columnsToGet = new SearchRequest.ColumnsToGet();
    //columnsToGet.setReturnAll(true); // Tentukan bahwa semua kolom dikembalikan.
    //columnsToGet.setColumns(Arrays.asList("ColName1","ColName2")); // Tentukan kolom yang ingin Anda kembalikan.
    //searchRequest.setColumnsToGet(columnsToGet);

    SearchResponse resp = client.search(searchRequest);
    //System.out.println("TotalCount: " + resp.getTotalCount()); // Tentukan bahwa jumlah total baris yang cocok bukan jumlah baris yang dikembalikan ditampilkan.
    System.out.println("Row: " + resp.getRows());
}

Aturan penagihan

Saat menggunakan indeks pencarian untuk menanyakan data, Anda dikenakan biaya untuk throughput baca yang dikonsumsi. Untuk informasi lebih lanjut, lihat Item yang dapat ditagih dari indeks pencarian.

FAQ

Referensi

  • Saat menggunakan indeks pencarian untuk menanyakan data, Anda dapat menggunakan metode kueri berikut: kueri tepat, kueri terms, kueri match all, kueri match, kueri match phrase, kueri awalan, kueri rentang, kueri wildcard, kueri fuzzy, kueri Boolean, kueri geo, kueri nested, kueri vektor KNN, dan kueri exists. Pilih metode kueri berdasarkan kebutuhan bisnis Anda untuk menanyakan data dari berbagai dimensi.

    Anda dapat mengurutkan atau membagi halaman baris yang memenuhi kondisi kueri menggunakan fitur pengurutan dan paging. Untuk informasi lebih lanjut, lihat Lakukan pengurutan dan paging.

    Anda dapat menggunakan fiturcollapse (distinct) untuk merangkum set hasil berdasarkan kolom tertentu. Dengan cara ini, data dari tipe yang ditentukan hanya muncul sekali dalam hasil kueri. Untuk informasi lebih lanjut, lihat Collapse (distinct).

  • Jika Anda ingin menganalisis data dalam tabel, Anda dapat menggunakan fitur agregasi dari operasi Search atau menjalankan pernyataan SQL. Sebagai contoh, Anda bisa mendapatkan nilai minimum dan maksimum, jumlah total, serta jumlah baris keseluruhan. Untuk informasi lebih lanjut, lihat Agregasi dan Kueri SQL.

  • Jika Anda ingin mendapatkan semua baris yang memenuhi kondisi kueri tanpa perlu mengurutkan baris tersebut, Anda dapat memanggil operasi ParallelScan dan ComputeSplits untuk menggunakan fitur pemindaian paralel. Untuk informasi lebih lanjut, lihat Pemindaian Paralel.