Indeks pencarian Tablestore mendukung kueri cocok pada kolom bertipe Teks. Untuk menjalankan kueri cocok, indeks pencarian menggunakan pemisah kata yang telah dikonfigurasi untuk memisahkan nilai dalam kolom bertipe Teks dan kata kunci kueri sebelum melakukan pencocokan perkiraan. Anda juga dapat menjalankan kueri fuzzy berkinerja tinggi pada kolom bertipe Teks yang menggunakan tokenisasi fuzzy, seperti dijelaskan dalam Permintaan Pencocokan Frasa.
Prasyarat
Klien Tablestore telah diinisialisasi. Untuk informasi lebih lanjut, lihat Inisialisasi Klien Tablestore.
Tabel data telah dibuat dan data telah ditulis ke tabel. 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 |
fieldName | Nama bidang yang ingin Anda cocokkan. Kueri cocok berlaku untuk bidang TEXT. |
text | Kata kunci yang digunakan untuk mencocokkan nilai bidang saat Anda melakukan kueri cocok. Jika bidang yang ingin Anda cocokkan adalah bidang TEXT, kata kunci tersebut dipisahkan menjadi beberapa token berdasarkan tipe alat analisis yang Anda tentukan saat membuat indeks pencarian. Jika Anda tidak menentukan tipe alat analisis saat membuat indeks pencarian, tokenisasi kata tunggal dilakukan. Sebagai contoh, jika bidang yang ingin Anda cocokkan adalah bidang TEXT, Anda mengatur tipe alat analisis ke tokenisasi kata tunggal, dan Anda menggunakan "this is" sebagai kata kunci pencarian, Anda bisa mendapatkan hasil kueri seperti "..., this is tablestore", "is this tablestore", "tablestore is cool", "this", dan "is". |
query | Tipe kueri. Atur parameter kueri 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 terkandung dalam nilai bidang. Baris dikembalikan hanya jika nilai bidang yang ditentukan oleh parameter fieldName dalam baris tersebut berisi 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 berisi setidaknya jumlah minimum token yang cocok. Jika Anda mengatur parameter operator ke AND, baris memenuhi kondisi kueri hanya jika nilai kolom berisi 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 terpengaruh. |
weight | Bobot yang ingin Anda tetapkan pada bidang yang ingin Anda kueri untuk menghitung skor relevansi kata kunci berbasis BM25. Parameter ini digunakan dalam skenario pencarian teks penuh. Jika Anda menetapkan bobot yang lebih tinggi untuk bidang yang ingin Anda kueri, skor relevansi kata kunci berbasis BM25 untuk bidang 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 primer yang dikembalikan. Jika Anda mengatur bidang returnAll ke true, semua kolom dikembalikan. |
Contoh kode
Berikut ini adalah contoh kode 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"); // Tentukan kata kunci yang ingin Anda cocokkan.
searchQuery.setQuery(matchQuery);
searchQuery.setOffset(0); // Atur offset ke 0.
searchQuery.setLimit(20); // Atur limit ke 20 untuk mengembalikan hingga 20 baris.
//searchQuery.setGetTotalCount(true); // Tentukan bahwa jumlah total baris yang cocok dikembalikan.
SearchRequest searchRequest = new SearchRequest("<TABLE_NAME>", "<SEARCH_INDEX_NAME>", searchQuery);
// Konfigurasikan parameter columnsToGet untuk menentukan kolom yang dikembalikan atau tentukan 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()); // Tentukan bahwa jumlah total baris yang cocok bukan jumlah baris yang dikembalikan yang ditampilkan.
System.out.println("Row: " + resp.getRows());
}
Pertanyaan Umum
Referensi
Saat menggunakan indeks pencarian untuk menanyakan data, Anda dapat menggunakan metode kueri berikut: term query, terms query, match all query, match query, match phrase query, prefix query, range query, wildcard query, geo query, KNN vector query, Boolean query, nested query, dan exists query. 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 dengan menggunakan fitur pengurutan dan paging. Untuk informasi lebih lanjut, lihat Lakukan Pengurutan dan Paging.
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 ingin menganalisis data dalam tabel, Anda dapat memanggil operasi Search untuk menggunakan fitur agregasi atau menggunakan fitur kueri SQL. Sebagai contoh, Anda dapat menanyakan nilai maksimum dan minimum, jumlah nilai, dan 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.