Kueri cocok digunakan untuk menanyakan data dalam tabel berdasarkan kecocokan perkiraan. Tablestore melakukan tokenisasi nilai di kolom TEXT dan kata kunci yang digunakan dalam kueri cocok sesuai dengan jenis analisis yang ditentukan. Dengan demikian, Tablestore dapat menjalankan kueri cocok berdasarkan token. Disarankan untuk menggunakan kueri frase cocok pada kolom dengan tokenisasi fuzzy guna memastikan performa tinggi dalam kueri fuzzy.
Prasyarat
Instance OTSClient telah diinisialisasi. Untuk informasi lebih lanjut, lihat Inisialisasi Klien Tablestore.
Tabel data telah dibuat dan data telah ditulis ke tabel tersebut. Untuk informasi lebih lanjut, lihat Buat Tabel Data dan Tulis Data.
Indeks pencarian telah dibuat untuk tabel data. Untuk informasi lebih lanjut, lihat Buat Indeks Pencarian.
Parameter
Parameter | Deskripsi |
field_name | Nama kolom yang ingin Anda tanyakan. Kueri cocok berlaku untuk kolom TEXT. |
text | Kata kunci yang digunakan untuk mencocokkan nilai kolom saat Anda melakukan kueri cocok. Jika kolom yang ingin Anda tanyakan adalah kolom TEXT, kata kunci tersebut akan di-tokenisasi menjadi beberapa token berdasarkan jenis analisis yang Anda tentukan saat membuat indeks pencarian. Secara default, tokenisasi satu kata dilakukan jika Anda tidak menentukan jenis analisis saat membuat indeks pencarian. Sebagai contoh, jika kolom yang ingin Anda cocokkan adalah kolom TEXT, Anda mengatur jenis analisis ke tokenisasi satu kata, 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 | Jenis kueri. Atur parameter ini ke MatchQuery. |
table_name | Nama tabel data. |
index_name | Nama indeks pencarian. |
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-baris tersebut, atur parameter limit ke 0. |
operator | Operator logika. Secara default, OR digunakan sebagai operator logika. Operator ini menentukan bahwa sebuah baris memenuhi kondisi kueri ketika nilai kolom berisi setidaknya jumlah minimum token. Jika Anda mengatur parameter 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. Sebuah baris dikembalikan hanya ketika nilai kolom yang ditanyakan dalam baris tersebut berisi setidaknya jumlah minimum token kata kunci yang cocok. Catatan Parameter minimum_should_match harus digunakan dengan operator logika OR. |
get_total_count | 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 terpengaruh. |
columns_to_get | Menentukan apakah akan mengembalikan semua kolom dari setiap baris yang memenuhi kondisi kueri.
|
Contoh
Contoh berikut menunjukkan cara menanyakan baris di mana nilai kolom Col_Keyword secara perkiraan cocok dengan 'this is'.
Melakukan kueri cocok menggunakan Tablestore SDK untuk Python V5.2.1 atau yang lebih baru
Jika Anda menggunakan Tablestore SDK untuk Python V5.2.1 atau yang lebih baru untuk melakukan kueri cocok, objek SearchResponse dikembalikan secara default. Kode berikut menunjukkan permintaan sampel:
query = MatchQuery('Col_Keyword', 'this is') search_response = client.search( '<TABLE_NAME>', '<SEARCH_INDEX_NAME>', SearchQuery(query, limit=100, get_total_count=True), ColumnsToGet(return_type=ColumnReturnType.ALL) ) print('request_id : %s' % search_response.request_id) print('is_all_succeed : %s' % search_response.is_all_succeed) print('total_count : %s' % search_response.total_count) print('rows : %s' % search_response.rows) # # Jika diperlukan paging mendalam, kami sarankan Anda menggunakan parameter next_token karena metode ini tidak memiliki batasan pada kedalaman paging. # all_rows = [] # next_token = None # # putaran pertama # search_response = client.search( # '<TABLE_NAME>', '<SEARCH_INDEX_NAME>', # SearchQuery(query, next_token=next_token, limit=100, get_total_count=True), # columns_to_get=ColumnsToGet(return_type=ColumnReturnType.ALL)) # all_rows.extend(search_response.rows) # # # loop # while search_response.next_token: # search_response = client.search( # '<TABLE_NAME>', '<SEARCH_INDEX_NAME>', # SearchQuery(query, next_token=search_response.next_token, limit=100, get_total_count=True), # columns_to_get=ColumnsToGet(return_type=ColumnReturnType.ALL)) # all_rows.extend(search_response.rows) # print('Total rows:%s' % len(all_rows))Gunakan permintaan sampel berikut untuk mengembalikan hasil tipe Tuple:
query = MatchQuery('Col_Keyword', 'this is') rows, next_token, total_count, is_all_succeed, agg_results, group_by_results = client.search( '<TABLE_NAME>', '<SEARCH_INDEX_NAME>', SearchQuery(query, limit=100, get_total_count=True), ColumnsToGet(return_type=ColumnReturnType.ALL) ).v1_response()Melakukan kueri cocok menggunakan Tablestore SDK untuk Python versi sebelum 5.2.1
Jika Anda menggunakan versi Tablestore SDK untuk Python yang lebih lama dari 5.2.1 untuk melakukan kueri cocok, hasil tipe TUPLE dikembalikan secara default. Contoh kode berikut memberikan permintaan sampel:
query = MatchQuery('Col_Keyword', 'this is') rows, next_token, total_count, is_all_succeed = client.search( '<TABLE_NAME>', '<SEARCH_INDEX_NAME>', SearchQuery(query, limit=100, get_total_count=True), ColumnsToGet(return_type=ColumnReturnType.ALL) )
FAQ
Referensi
Saat menggunakan indeks pencarian untuk menanyakan data, Anda dapat menggunakan metode kueri berikut: kueri tepat, kueri terms, kueri cocok semua, kueri cocok, kueri frase cocok, kueri awalan, kueri rentang, kueri wildcard, kueri geo, kueri Boolean, kueri vektor KNN, kueri bersarang, dan kueri eksistensi. 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 pemisahan halaman. Untuk informasi lebih lanjut, lihat Pengurutan dan pemisahan halaman.
Anda dapat menggunakan fitur collapse (distinct) untuk meruntuhkan set hasil berdasarkan kolom tertentu. Dengan cara ini, data dari tipe yang ditentukan muncul hanya sekali dalam hasil kueri. Untuk informasi lebih lanjut, lihat Collapse (distinct).
Jika Anda ingin menganalisis data dalam tabel data, Anda dapat menggunakan fitur agregasi operasi Search atau menjalankan pernyataan SQL. Sebagai contoh, Anda dapat memperoleh nilai minimum dan maksimum, jumlah, dan jumlah total baris. Untuk informasi lebih lanjut, lihat Agregasi dan Kueri SQL.
Jika Anda ingin memperoleh semua baris yang memenuhi kondisi kueri tanpa perlu mengurutkan baris-baris tersebut, Anda dapat memanggil operasi ParallelScan dan ComputeSplits untuk menggunakan fitur pemindaian paralel. Untuk informasi lebih lanjut, lihat Pemindaian paralel.