全部产品
Search
文档中心

Tablestore:Lakukan kueri kecocokan

更新时间:Jul 06, 2025

Kueri kecocokan dapat digunakan untuk menanyakan data dalam tabel berdasarkan kecocokan perkiraan. Tablestore melakukan tokenisasi nilai kolom bertipe TEXT dan kata kunci yang Anda gunakan untuk menjalankan kueri kecocokan berdasarkan analisis yang telah ditentukan. Oleh karena itu, Tablestore dapat menjalankan kueri kecocokan berdasarkan token. Kami merekomendasikan agar Anda memanggil operasi MatchPhraseQuery untuk menjalankan kueri frasa kecocokan pada kolom di mana tokenisasi kabur digunakan untuk memastikan kinerja tinggi kueri kabur.

Prasyarat

Parameter

Parameter

Deskripsi

table_name

Nama tabel data.

index_name

Nama indeks pencarian.

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 menanyakan data spesifik dari baris tersebut, atur parameter limit ke 0.

get_total_count

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

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

query_type

Tipe kueri. Atur parameter ini ke QueryTypeConst::MATCH_QUERY.

field_name

Nama kolom yang ingin Anda tanyakan.

Kolom bisa bertipe TEXT.

text

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

Jika kolom yang ingin Anda tanyakan adalah bertipe TEXT, kata kunci di-tokenisasi menjadi beberapa token berdasarkan tipe analisis yang Anda tentukan saat membuat indeks pencarian. Secara default, tokenisasi satu kata dilakukan jika Anda tidak menentukan tipe analisis saat membuat indeks pencarian.

Sebagai contoh, jika kolom yang ingin Anda tanyakan adalah bertipe TEXT dan tipe analisisnya adalah tokenisasi satu kata, ketika Anda melakukan kueri kecocokan menggunakan frase "this is", hasil kueri seperti "..., this is tablestore", "is this tablestore", "tablestore is cool", "this", dan "is" akan dikembalikan.

operator

Operator logis. Secara default, OR digunakan sebagai operator logis, yang menentukan bahwa suatu baris memenuhi kondisi kueri ketika nilai kolom berisi setidaknya jumlah minimum token.

Jika Anda mengatur operator ke AND, baris tersebut hanya memenuhi kondisi kueri ketika nilai kolom berisi semua token.

minimum_should_match

Jumlah minimum token yang cocok yang terkandung dalam nilai kolom.

Suatu baris hanya dikembalikan ketika nilai kolom yang ditanyakan dalam baris tersebut berisi setidaknya jumlah minimum token yang cocok.

Catatan

Parameter minimum_should_match harus digunakan bersama dengan operator logis OR.

columns_to_get

Menentukan apakah akan mengembalikan semua kolom dalam baris yang memenuhi kondisi kueri. Anda dapat menentukan parameter return_type dan return_names.

  • Jika Anda mengatur return_type ke ColumnReturnTypeConst::RETURN_SPECIFIED, Anda dapat menggunakan return_names untuk menentukan kolom yang akan dikembalikan.

  • Jika Anda mengatur parameter return_type ke ColumnReturnTypeConst::RETURN_ALL, semua kolom akan dikembalikan.

  • Jika Anda mengatur return_type ke ColumnReturnTypeConst::RETURN_ALL_FROM_INDEX, semua kolom dalam indeks pencarian akan dikembalikan.

  • Jika Anda mengatur parameter return_type ke ColumnReturnTypeConst::RETURN_NONE, hanya kolom kunci utama yang dikembalikan.

Contoh

Berikut ini adalah kode sampel yang menunjukkan cara menanyakan baris di mana nilai kolom teks cocok dengan "ots text php keyword" dalam tabel data.

$request = array(
    'table_name' => 'php_sdk_test',
    'index_name' => 'php_sdk_test_search_index',
    'search_query' => array(
        'offset' => 0,
        'limit' => 2,
        'get_total_count' => true,
        'query' => array(
            'query_type' => QueryTypeConst::MATCH_QUERY,
            'query' => array(
                'field_name' => 'text',
                'text' => 'ots text php keyword',
//              'operator' => QueryOperatorConst::PBAND,
                'operator' => QueryOperatorConst::PBOR,// Gunakan parameter minimum_should_match bersama dengan operator logis OR. 
                'minimum_should_match' => 3
            )
        ),
        'sort' => array(
            array(
                'field_sort' => array(
                    'field_name' => 'keyword',
                    'order' => SortOrderConst::SORT_ORDER_ASC
                )
            ),
        )
    ),
    'columns_to_get' => array(
        'return_type' => ColumnReturnTypeConst::RETURN_SPECIFIED,
        'return_names' => array('text')
    )
);
$response = $otsClient->search($request);

FAQ

Referensi

  • Ketika 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 Boolean, kueri geo, kueri nested, dan kueri exists. Anda dapat menggunakan metode kueri yang berbeda untuk menanyakan data dari berbagai dimensi sesuai kebutuhan bisnis Anda.

    Jika ingin mengurutkan atau membagi halaman baris yang memenuhi kondisi kueri, Anda dapat menggunakan fitur Pengurutan dan paging. Untuk informasi lebih lanjut, lihat Pengurutan dan Paging.

    Jika ingin meruntuhkan set hasil berdasarkan kolom tertentu, Anda dapat menggunakan fitur collapse (distinct). 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 data, seperti mendapatkan nilai ekstrem, jumlah, dan total baris, Anda dapat melakukan operasi agregasi atau menjalankan pernyataan SQL. Untuk informasi lebih lanjut, lihat Agregasi dan Kueri SQL.

  • Jika ingin dengan cepat 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.