全部产品
Search
文档中心

Tablestore:Kueri Pencocokan

更新时间:Jul 06, 2025

Anda dapat menggunakan kueri pencocokan untuk menanyakan data dalam tabel berdasarkan pencocokan perkiraan. Tablestore melakukan tokenisasi pada nilai di kolom TEXT dan kata kunci yang digunakan dalam kueri pencocokan, sesuai dengan tipe analisis yang ditentukan. Dengan metode ini, Tablestore dapat menjalankan kueri pencocokan berdasarkan token. Kami merekomendasikan penggunaan kueri frasa pencocokan untuk kolom TEXT yang menggunakan tokenisasi fuzzy, guna memastikan performa tinggi dalam kueri fuzzy.

Skenario

Anda dapat menggunakan kueri pencocokan untuk mencari data yang mengandung frase tertentu. Kombinasi kueri frasa pencocokan dan tokenisasi memungkinkan pencarian teks penuh dalam skenario seperti analisis big data, pencarian konten, manajemen pengetahuan, analisis media sosial, analisis log, sistem Q&A cerdas, dan tinjauan kepatuhan. Sebagai contoh, Anda dapat dengan cepat menemukan daftar produk yang judul, deskripsi, atau tag-nya mengandung kata kunci tertentu di platform e-commerce, serta mendeteksi pesan kesalahan atau operasi mencurigakan dalam log.

Fitur

Anda dapat menggunakan kueri pencocokan untuk menanyakan data dalam tabel berdasarkan pencocokan perkiraan. Misalnya, jika nilai di kolom judul bertipe TEXT adalah "Hangzhou West Lake Scenic Area" dalam satu baris dan menggunakan tokenisasi kata tunggal, baris tersebut akan memenuhi kondisi kueri jika kata kunci diatur menjadi "Lake Scenic".

Saat menggunakan kueri pencocokan, Anda harus menentukan nama kolom dan kata kunci. Jika setidaknya salah satu token dalam baris cocok dengan token dalam kata kunci, baris tersebut memenuhi kondisi kueri.

Saat menjalankan kueri pencocokan, Anda dapat menentukan jumlah minimum token yang cocok dalam nilai kolom, bobot untuk kolom yang ingin Anda tanyakan guna menghitung skor relevansi berbasis BM25, kolom-kolom yang ingin dikembalikan, apakah akan mengembalikan jumlah total baris yang memenuhi kondisi kueri, serta metode pengurutan hasil.

Operasi API

Anda dapat memanggil operasi Search atau ParallelScan dan mengatur jenis kueri ke MatchQuery untuk menjalankan kueri pencocokan.

Parameter

Parameter

Deskripsi

fieldName

Nama kolom yang ingin Anda cocokkan.

Kueri pencocokan berlaku untuk kolom TEXT.

text

Kata kunci yang digunakan untuk mencocokkan nilai kolom saat Anda melakukan kueri pencocokan.

Jika kolom yang ingin Anda cocokkan adalah kolom TEXT, kata kunci tersebut di-tokenisasi menjadi beberapa token berdasarkan tipe analisis yang Anda tentukan saat membuat indeks pencarian. Jika Anda tidak menentukan tipe analisis saat membuat indeks pencarian, dilakukan tokenisasi kata tunggal.

Sebagai contoh, jika kolom yang ingin Anda cocokkan adalah kolom TEXT, Anda mengatur tipe analisis ke tokenisasi kata tunggal, dan Anda menggunakan "this is" sebagai kata kunci pencarian, Anda dapat memperoleh hasil kueri seperti "..., this is tablestore", "is this tablestore", "tablestore is cool", "this", dan "is".

query

Tipe kueri. Atur parameter query ke matchQuery.

offset

Posisi dari mana kueri saat ini dimulai.

limit

Jumlah maksimum baris yang ingin Anda kembalikan dalam kueri saat ini.

Untuk hanya menanyakan jumlah baris yang memenuhi kondisi kueri tanpa data spesifik, atur parameter limit ke 0.

minimumShouldMatch

Jumlah minimum token yang cocok yang terkandung dalam nilai kolom.

Baris dikembalikan hanya jika nilai kolom yang ditentukan oleh parameter fieldName dalam baris tersebut mengandung setidaknya jumlah minimum token yang cocok.

Catatan

Anda harus menggunakan parameter minimumShouldMatch bersama dengan operator logika OR.

operator

Operator logika. Secara default, OR digunakan sebagai operator logika, yang menentukan bahwa baris memenuhi kondisi kueri ketika nilai kolom mengandung setidaknya jumlah minimum token yang cocok.

Jika Anda mengatur parameter operator ke AND, baris memenuhi kondisi kueri hanya jika nilai kolom mengandung semua token yang cocok.

getTotalCount

Menentukan apakah akan mengembalikan jumlah total baris yang memenuhi kondisi kueri. Nilai default dari 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 berkurang.

weight

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 penuh. Jika Anda menentukan bobot lebih tinggi untuk kolom yang ingin Anda tanyakan, skor relevansi kata kunci berbasis BM25 untuk kolom tersebut lebih tinggi. Nilai dari parameter ini adalah angka floating point 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 menentukan bidang returnAll dan columns untuk parameter columnsToGet.

Nilai default dari 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.

Catatan Penggunaan

Anda dapat menggunakan indeks pencarian untuk mengurutkan hasil kueri berdasarkan skor relevansi berbasis BM25. Skor relevansi kustom tidak dapat digunakan untuk mengurutkan hasil kueri.

Metode

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

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 instans yang ingin dikelola atau pilih Manage Instance di kolom Actions instans.

    4. Di tab Tables dari tab 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 Anda memilih operator logika And, data yang memenuhi kondisi kueri dikembalikan. Jika Anda memilih operator Or dan menentukan kondisi kueri tunggal, data yang memenuhi kondisi kueri dikembalikan. Jika Anda memilih operator logika Atau dan menentukan beberapa kondisi kueri, data yang memenuhi salah satu kondisi kueri dikembalikan. Jika Anda memilih operator logika Not, data yang tidak memenuhi kondisi kueri dikembalikan.

    3. Pilih kolom bertipe TEXT dan klik Add.

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

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

    6. Secara default, fitur agregasi dinonaktifkan. Jika Anda 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.

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

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

    {
        "Offset": -1,
        "Limit": 10,
        "Collapse": null,
        "Sort": null,
        "GetTotalCount": true,
        "Token": null,
        "Query": {
            "Name": "MatchQuery",
            "Query": {
                "FieldName": "col_text",
                "Text": "this is",
                "MinimumShouldMatch": 1
            }
        }
    }

Gunakan SDK Tablestore

Anda dapat menjalankan kueri pencocokan menggunakan SDK Tablestore berikut: 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. Dalam contoh ini, SDK Tablestore untuk Java digunakan.

Berikut ini adalah kode sampel yang menunjukkan cara menanyakan baris di mana nilai kolom Col_Keyword cocok dengan "hangzhou" dalam sebuah tabel:

/**
 * Query the rows in which the value of the Col_Keyword column matches "hangzhou" in a table. Tablestore returns the total number of rows that meet the query conditions and the specific data of some of these rows. 
 * @param client
 */
private static void matchQuery(SyncClient client) {
    SearchQuery searchQuery = new SearchQuery();
    MatchQuery matchQuery = new MatchQuery(); // Set the query type to MatchQuery. 
    matchQuery.setFieldName("Col_Keyword"); // Specify the name of the column that you want to query. 
    matchQuery.setText("hangzhou"); // Specify the keyword that you want to match. 
    searchQuery.setQuery(matchQuery);
    searchQuery.setOffset(0); // Set offset to 0. 
    searchQuery.setLimit(20); // Set limit to 20 to return up to 20 rows. 
    //searchQuery.setGetTotalCount(true); // Specify that the total number of matched rows is returned. 

    SearchRequest searchRequest = new SearchRequest("<TABLE_NAME>", "<SEARCH_INDEX_NAME>", searchQuery);
    // You can configure the columnsToGet parameter to specify the columns to return or specify that all columns are returned. If you do not configure this parameter, only the primary key columns are returned. 
    //SearchRequest.ColumnsToGet columnsToGet = new SearchRequest.ColumnsToGet();
    //columnsToGet.setReturnAll(true); // Specify that all columns are returned. 
    //columnsToGet.setColumns(Arrays.asList("ColName1","ColName2")); // Specify the columns that you want to return. 
    //searchRequest.setColumnsToGet(columnsToGet);

    SearchResponse resp = client.search(searchRequest);
    //System.out.println("TotalCount: " + resp.getTotalCount()); // Specify that the total number of matched rows instead of the number of returned rows is displayed. 
    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 cocok semua, kueri pencocokan, kueri frasa pencocokan, kueri awalan, kueri rentang, kueri wildcard, kueri fuzzy, kueri Boolean, kueri geo, kueri bersarang, kueri vektor KNN, dan kueri eksistensi. Anda dapat memilih metode kueri berdasarkan kebutuhan bisnis untuk menanyakan data dari berbagai dimensi.

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

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

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

  • Jika Anda 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.