全部产品
Search
文档中心

Tablestore:Kueri wildcard

更新时间:Jul 06, 2025

Gunakan kueri wildcard untuk melakukan pencarian fuzzy. Kueri ini mirip dengan operator LIKE dalam database dan dapat digunakan untuk menemukan data yang mengandung kata atau frase tertentu dalam teks.

Informasi latar belakang

Saat menjalankan kueri wildcard, Anda dapat menggunakan karakter asterisk (*) dan tanda tanya (?) sebagai wildcard. Asterisk (*) cocok dengan string dengan panjang berapa pun di awal, tengah, atau akhir istilah pencarian. Tanda tanya (?) cocok dengan satu karakter pada posisi tertentu. String dapat dimulai dengan asterisk (*) atau tanda tanya (?). Sebagai contoh, jika Anda mencari string "table*e", hasilnya dapat mencakup "tablestore".

Untuk menggunakan *word* (setara dengan WHERE field_a LIKE '%word%' dalam SQL), gunakan kueri wildcard berbasis tokenisasi. Untuk informasi lebih lanjut, lihat Kueri wildcard berbasis tokenisasi. Performa kueri tetap stabil meskipun volume data bertambah.

Catatan

Untuk menggunakan operator NOT LIKE, gabungkan kueri wildcard dengan parameter mustNotQueries dari kueri Boolean. Untuk informasi lebih lanjut, lihat Kueri Boolean.

Prasyarat

Parameter

Parameter

Deskripsi

fieldName

Nama bidang yang ingin Anda tanyakan.

value

String yang mengandung karakter wildcard. Panjang string tidak boleh melebihi 32 karakter.

query

Jenis kueri. Atur parameter ini ke WildcardQuery.

getTotalCount

Menentukan apakah akan mengembalikan jumlah total baris yang memenuhi kondisi kueri. Nilai default parameter ini adalah false, yang menentukan bahwa jumlah total baris yang memenuhi kondisi kueri tidak dikembalikan.

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

weight

Bobot yang ingin Anda tetapkan pada bidang yang ingin Anda tanyakan untuk menghitung skor relevansi kata kunci berdasarkan BM25. Parameter ini digunakan dalam skenario pencarian teks lengkap. Jika Anda menetapkan bobot lebih tinggi untuk bidang yang ingin Anda tanyakan, skor relevansi kata kunci berdasarkan BM25 untuk bidang tersebut lebih tinggi. Nilai parameter ini adalah angka floating point positif.

Parameter ini tidak memengaruhi jumlah baris yang dikembalikan tetapi memengaruhi skor relevansi kata kunci berdasarkan 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 bidang returnAll dan columns untuk parameter ini.

Nilai default bidang returnAll adalah false, yang menentukan bahwa tidak semua kolom dikembalikan. Dalam hal ini, Anda dapat menggunakan bidang 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 bidang returnAll ke true, semua kolom dikembalikan.

Contoh

Berikut adalah kode sampel untuk menanyakan 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 mengandung satu atau lebih 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 akan dikembalikan atau tentukan 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()); // Tampilkan jumlah total baris yang cocok bukan jumlah baris yang dikembalikan.
    System.out.println("Row: " + resp.getRows());
}

Pertanyaan Umum

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 prefix, kueri range, kueri wildcard, kueri geo, kueri vektor KNN, kueri Boolean, kueri nested, dan kueri exists. Setelah membuat indeks pencarian, Anda dapat menggunakan metode kueri yang disediakan oleh indeks pencarian untuk menanyakan data dari berbagai dimensi sesuai kebutuhan bisnis Anda.

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

    Anda dapat menggunakan fitur collapse (distinct) untuk meruntuhkan set hasil berdasarkan kolom tertentu. Dengan cara ini, data dari jenis tertentu muncul hanya sekali dalam hasil kueri. Untuk informasi lebih lanjut, lihat Collapse (distinct).

  • Jika ingin menganalisis data dalam tabel, Anda dapat memanggil operasi Search untuk menggunakan fitur agregasi atau kueri SQL. Contohnya, Anda dapat menanyakan nilai maksimum dan minimum, jumlah nilai, serta jumlah baris. Untuk informasi lebih lanjut, lihat Agregasi dan Kueri SQL.

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