All Products
Search
Document Center

Tablestore:Kueri wildcard

Last Updated:May 08, 2026

Kueri wildcard (WildcardQuery) melakukan pencarian fuzzy, mirip dengan operator LIKE dalam database.

Catatan

Untuk mengimplementasikan fungsionalitas NOT LIKE, Anda harus menggunakan WildcardQuery bersama parameter mustNotQueries dalam kueri boolean. Untuk informasi lebih lanjut, lihat Boolean query.

Ikhtisar

Kueri wildcard menggunakan karakter khusus untuk pencocokan pola, yang meningkatkan presisi dan efisiensi pencarian.

Saat menggunakan fitur WildcardQuery, Anda dapat menggunakan string kueri dengan karakter wildcard untuk mencocokkan data. Fitur ini mendukung tanda bintang (*) dan tanda tanya (?). Tanda bintang (*) merepresentasikan urutan karakter apa pun, sedangkan tanda tanya (?) merepresentasikan satu karakter tunggal. String kueri dapat diawali dengan tanda bintang (*) atau tanda tanya (?). Misalnya, kueri untuk table*e dapat mencocokkan tablestore.

WildcardQuery didukung untuk bidang dengan tipe data Keyword dan FuzzyKeyword.

  • Keyword: Tipe data string dasar. Performa kueri fuzzy, seperti kueri wildcard, pada bidang Keyword buruk untuk dataset besar dan semakin menurun seiring pertambahan volume data.

  • FuzzyKeyword: Tipe data yang dioptimalkan untuk kueri fuzzy seperti kueri wildcard. Memberikan performa unggul dan stabil yang tidak menurun secara signifikan seiring peningkatan ukuran dataset.

Search Index menyediakan tiga jenis kueri wildcard untuk mendukung berbagai kebutuhan pencocokan fuzzy. Untuk informasi lebih lanjut, lihat tabel berikut.

Catatan

Topik ini menjelaskan cara melakukan WildcardQuery pada bidang bertipe Keyword dan FuzzyKeyword. Untuk mempelajari implementasi kueri fuzzy pada bidang bertipe Text, lihat Kueri wildcard berbasis tokenisasi.

Tipe

Metode kueri

Keunggulan

Kelemahan

Keyword

WildcardQuery

Kompatibel dengan Elasticsearch.

Performa kueri menurun seiring pertambahan jumlah data yang diindeks.

FuzzyKeyword

WildcardQuery

Memberikan performa unggul dan stabil yang tidak menurun secara signifikan seiring peningkatan ukuran data.

Menyebabkan ekspansi data tertentu.

Text

MatchPhraseQuery

Mendukung pencocokan tanpa membedakan huruf besar/kecil.

Menyebabkan ekspansi data tertentu.

Catatan penggunaan

Istilah kueri dalam WildcardQuery tidak boleh melebihi 32 karakter baik untuk bidang Keyword maupun FuzzyKeyword.

API

Untuk melakukan kueri wildcard, panggil operasi Search atau parallel scan dan atur tipe kueri ke WildcardQuery.

Parameter

Parameter

Deskripsi

fieldName

Nama kolom yang akan dikueri.

value

String yang berisi wildcard, yang tidak boleh melebihi 32 karakter.

query

Tipe kueri. Atur parameter ini ke WildcardQuery.

getTotalCount

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

Mengembalikan jumlah total baris yang cocok dapat memengaruhi performa kueri.

weight

Bobot kueri, bilangan titik mengambang positif yang digunakan untuk pengurutan berbasis skor dalam pencarian teks lengkap. Bobot yang lebih tinggi memberikan skor lebih tinggi pada kolom dalam hasil kueri.

Parameter ini memengaruhi skor hasil yang dikembalikan tetapi tidak memengaruhi jumlah hasil yang dikembalikan.

tableName

Nama tabel data.

indexName

Nama Search Index.

columnsToGet

Menentukan kolom mana yang dikembalikan. Termasuk pengaturan returnAll dan columns.

Secara default, returnAll bernilai false, yang berarti tidak semua kolom dikembalikan. Dalam hal ini, Anda dapat menggunakan columns untuk menentukan kolom yang dikembalikan. Jika Anda tidak menentukan kolom apa pun, hanya kolom kunci primer yang dikembalikan.

Jika Anda mengatur returnAll ke true, semua kolom dikembalikan.

Cara menggunakan

Anda dapat melakukan kueri wildcard menggunakan Konsol Tablestore, tool command-line (CLI), atau SDK. Sebelum memulai, lakukan persiapan berikut:

Penting

Saat ini, WildcardQuery pada bidang FuzzyKeyword hanya didukung melalui SDK Tablestore.

Gunakan konsol

  1. Buka tab Index Management.

    1. Login ke Tablestore console.

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

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

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

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

  3. Pada kotak dialog Search, konfigurasikan kueri.

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

      Catatan

      Secara default, Tablestore 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 salah 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 tipe kueri untuk bidang indeks ke WildcardQuery dan masukkan nilai yang berisi wildcard.

    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 pada tab Index Management.

Gunakan alat baris perintah

Anda dapat menjalankan perintah search di tool command-line (CLI) untuk mengkueri data menggunakan Search Index. Untuk informasi lebih lanjut, lihat Search Index.

Penting

CLI saat ini hanya mendukung WildcardQuery untuk tipe Keyword, bukan untuk tipe FuzzyKeyword.

  1. Jalankan perintah search untuk mengkueri data dalam tabel menggunakan Search Index search_index, yang mengembalikan semua kolom yang diindeks.

    search -n search_index --return_all_indexed
  2. Masukkan kondisi kueri sesuai permintaan. Contoh kode berikut:

    {
        "Offset": -1,
        "Limit": 10,
        "Collapse": null,
        "Sort": null,
        "GetTotalCount": true,
        "Token": null,
        "Query": {
            "Name": "WildcardQuery",
            "Query": {
                "FieldName": "col_keyword",
                "Value": "hang*u"
            }
        }
    }

Gunakan SDK

Anda dapat melakukan kueri wildcard menggunakan Java SDK, Go SDK, Python SDK, Node.js SDK, .NET SDK, atau PHP SDK. Bagian ini menggunakan Java SDK sebagai contoh.

Catatan

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

Kode contoh berikut menunjukkan cara mengkueri baris di mana nilai kolom Col_Keyword cocok dengan pola "hang*u".

/**
 * Cari tabel untuk baris di mana nilai kolom Col_Keyword cocok dengan pola "hang*u". 
 * @param client
 */
private static void wildcardQuery(SyncClient client) {
    SearchQuery searchQuery = new SearchQuery();
    WildcardQuery wildcardQuery = new WildcardQuery(); // Gunakan WildcardQuery. 
    wildcardQuery.setFieldName("Col_Keyword");
    wildcardQuery.setValue("hang*u"); // Tentukan string yang berisi satu atau beberapa karakter wildcard dalam wildcardQuery. 
    searchQuery.setQuery(wildcardQuery);
    //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 primer 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()); // Tampilkan jumlah total baris yang cocok, bukan jumlah baris yang dikembalikan. 
    System.out.println("Row: " + resp.getRows());
}

Penagihan

Mengkueri data menggunakan Search Index mengonsumsi throughput baca. Untuk informasi lebih lanjut, lihat Metering dan penagihan Search Index.

FAQ

Topik terkait