Kueri sufiks menggunakan Tablestore SDK for Java mencocokkan nilai lengkap pada bidang FuzzyKeyword yang diakhiri dengan string tertentu, lalu mengembalikan baris yang cocok atau jumlah totalnya.
Prasyarat
Instal Tablestore SDK for Java dan inisialisasi klien.
Kueri sufiks memerlukan Tablestore SDK for Java versi 5.17.0 atau lebih baru.
Deskripsi fitur
Kueri sufiks mencocokkan nilai lengkap suatu bidang yang diakhiri dengan string tertentu. Kueri ini hanya didukung oleh bidang FuzzyKeyword. Untuk informasi selengkapnya mengenai tipe bidang ini, lihat String types. Pencocokan bersifat case-sensitive. Sebagai contoh, nilai bidang order-H001 cocok dengan sufiks H001, tetapi tidak cocok dengan h001.
Bidang FuzzyKeyword tidak mendukung pengurutan (sorting) atau agregasi. Jika kueri yang sama memerlukan sorting atau agregasi, gunakan bidang lain yang mendukung operasi tersebut.
Bidang Keyword tidak mendukung SuffixQuery. Untuk menerapkan pencocokan sufiks yang setara, balikkan nilai bidang sebelum menyimpannya ke dalam bidang Keyword yang akan digunakan untuk kueri. Saat melakukan kueri, balikkan string sufiks yang ingin dicocokkan, lalu jalankan prefix query (PrefixQuery) pada bidang tersebut.
Atur tipe kueri menjadi SuffixQuery saat memanggil metode search. Gunakan SearchQuery untuk mengonfigurasi batas jumlah hasil, pelacakan jumlah total, serta pengaturan kueri umum lainnya.
SearchResponse search(SearchRequest request)
Contoh berikut melakukan kueri terhadap nilai FuzzyKeyword pada bidang phone yang diakhiri dengan 1234. Kueri ini mengembalikan hingga 10 baris dan jumlah total kecocokan.
String tableName = "example_table";
String indexName = "example_index";
SuffixQuery suffixQuery = new SuffixQuery();
suffixQuery.setFieldName("phone");
suffixQuery.setSuffix("1234");
SearchQuery searchQuery = new SearchQuery();
searchQuery.setQuery(suffixQuery);
searchQuery.setLimit(10);
searchQuery.setTrackTotalCount(SearchQuery.TRACK_TOTAL_COUNT);
SearchRequest request = new SearchRequest(tableName, indexName, searchQuery);
SearchRequest.ColumnsToGet columnsToGet = new SearchRequest.ColumnsToGet();
columnsToGet.setReturnAll(true);
request.setColumnsToGet(columnsToGet);
SearchResponse response = client.search(request);
System.out.println(response.getTotalCount());
System.out.println(response.getRows());
Parameter
Permintaan pencarian
request adalah objek SearchRequest yang berisi parameter berikut.
|
Nama |
Type |
Deskripsi |
|
tableName (wajib) |
String |
Nama tabel data. |
|
indexName (wajib) |
String |
Nama indeks pencarian. |
|
searchQuery (wajib) |
SearchQuery |
Kondisi kueri dan pengaturan kueri umum. |
|
columnsToGet (opsional) |
SearchRequest.ColumnsToGet |
Kolom yang akan dikembalikan. Jika parameter ini tidak dikonfigurasi, hanya kolom kunci primer yang dikembalikan. |
|
timeoutInMillisecond (opsional) |
int |
Timeout kueri tingkat permintaan dalam milidetik. Nilai default-nya adalah |
|
routingValues (opsional) |
|
Nilai kunci primer yang sesuai dengan bidang routing kustom. Biarkan parameter ini tidak diatur jika routing kustom tidak dikonfigurasi. |
Pengaturan kueri
request.searchQuery adalah objek SearchQuery yang berisi parameter berikut.
|
Nama |
Tipe |
Deskripsi |
|
query (wajib) |
Query |
Kondisi kueri. Atur parameter ini ke objek |
|
offset (opsional) |
Integer |
Posisi awal untuk kueri saat ini. |
|
limit (opsional) |
Integer |
Jumlah maksimum baris yang dikembalikan. Atur parameter ini ke |
|
collapse (opsional) |
Collapse |
Konfigurasi collapse yang digunakan untuk menghapus duplikat hasil berdasarkan bidang tertentu. Untuk informasi selengkapnya, lihat Collapse (distinct). |
|
sort (opsional) |
Sort |
Urutan pengurutan hasil. Bidang |
|
trackTotalCount (opsional) |
int |
Jumlah maksimum baris yang cocok untuk dihitung. Nilai default-nya adalah |
|
filter (opsional) |
SearchFilter |
Filter pasca-kueri yang diterapkan pada hasil |
|
aggregationList (opsional) |
|
Konfigurasi agregasi. Bidang |
|
groupByList (opsional) |
|
Konfigurasi pengelompokan. Bidang |
|
token (opsional) |
byte[] |
Token paginasi. Atur |
Kondisi kueri
request.searchQuery.query adalah objek SuffixQuery yang berisi parameter berikut.
|
Nama |
Tipe |
Deskripsi |
|
fieldName (wajib) |
String |
Nama bidang |
|
suffix (wajib) |
String |
String kueri. Nilai bidang lengkap harus diakhiri dengan string ini. Pencocokan bersifat case-sensitive. |
|
weight (opsional) |
float |
Bobot relevansi kondisi kueri. Nilainya harus berupa bilangan titik mengambang positif. Nilai yang lebih besar memberikan pengaruh lebih besar terhadap skor relevansi BM25. Parameter ini tidak mengubah baris mana yang cocok atau berapa banyak baris yang dikembalikan. Parameter ini hanya memengaruhi urutan hasil ketika |
Kolom yang dikembalikan
request.columnsToGet adalah objek SearchRequest.ColumnsToGet yang berisi parameter berikut.
|
Nama |
Tipe |
Deskripsi |
|
columns (opsional) |
|
Kolom atribut yang dikembalikan. Konfigurasikan parameter ini hanya jika |
|
returnAll (opsional) |
boolean |
Menentukan apakah semua kolom atribut dari tabel data akan dikembalikan. Nilai default-nya adalah |
|
returnAllFromIndex (opsional) |
boolean |
Menentukan apakah semua kolom atribut yang diindeks akan dikembalikan. Nilai default-nya adalah |
Nilai kembalian
search mengembalikan objek SearchResponse. Tabel berikut menjelaskan bidang utamanya.
|
Nama |
Type |
Deskripsi |
|
totalCount |
long |
Jumlah baris yang cocok, diperoleh dengan memanggil |
|
rows |
|
Baris yang dikembalikan oleh kueri saat ini, diperoleh dengan memanggil |
|
nextToken |
byte[] |
Token untuk halaman berikutnya, diperoleh dengan memanggil |
|
isAllSuccess |
boolean |
Menunjukkan apakah semua partisi indeks berhasil dikueri, diperoleh dengan memanggil |