Kueri wildcard dengan Tablestore SDK for Java menggunakan pola * dan ? untuk mencocokkan data dalam bidang Keyword, Text, atau FuzzyKeyword.
Prasyarat
Instal Tablestore SDK for Java dan inisialisasi client.
Deskripsi fitur
Kueri wildcard mencocokkan bidang yang diindeks terhadap pola yang mengandung karakter wildcard. Semantik pencocokannya mirip dengan LIKE pada SQL, tetapi menggunakan * dan ? sebagai karakter wildcard. Untuk bidang Keyword atau FuzzyKeyword, pola tersebut dicocokkan terhadap seluruh nilai bidang. Untuk bidang Text, pola tersebut dicocokkan terhadap setiap token yang dihasilkan dari nilai bidang, sedangkan polanya sendiri tidak ditokenisasi. Untuk informasi lebih lanjut tentang tipe bidang yang didukung, lihat String types. Pencocokan bersifat case-sensitive.
Pola dapat diawali dengan karakter wildcard dan mendukung karakter wildcard berikut:
*mencocokkan nol atau lebih karakter.?mencocokkan satu karakter apa pun.
Sebagai contoh, table*e cocok dengan tablestore. Pola hang*u cocok dengan hangu dan hangzhou. Pola hang?u cocok dengan hangxu tetapi tidak cocok dengan hangu.
Untuk mencocokkan nilai yang mengandung string tertentu—misalnya dengan pola *word* (setara dengan WHERE field_a LIKE '%word%' pada SQL)—gunakan kueri wildcard berbasis token. Pendekatan ini menjaga kinerja kueri agar tidak menurun seiring pertumbuhan volume data.
Untuk mengecualikan data yang sesuai dengan pola tertentu, tambahkan objek WildcardQuery ke BoolQuery.mustNotQueries. Konfigurasi ini setara dengan operator NOT LIKE pada SQL. Untuk informasi tentang konfigurasi BoolQuery, lihat Boolean query.
Tetapkan tipe kueri menjadi WildcardQuery saat memanggil search. Gunakan SearchQuery untuk mengonfigurasi batas hasil, pelacakan jumlah total, dan pengaturan kueri umum lainnya.
SearchResponse search(SearchRequest request)
Contoh berikut melakukan kueri terhadap nilai Keyword dalam bidang product_name yang sesuai dengan pola table*e. Kueri ini mengembalikan maksimal 10 baris dan jumlah total kecocokan.
String tableName = "example_table";
String indexName = "example_index";
WildcardQuery wildcardQuery = new WildcardQuery();
wildcardQuery.setFieldName("product_name");
wildcardQuery.setValue("table*e");
SearchQuery searchQuery = new SearchQuery();
searchQuery.setQuery(wildcardQuery);
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.
|
Name |
Type |
Description |
|
tableName (required) |
String |
Nama tabel data. |
|
indexName (required) |
String |
Nama indeks pencarian. |
|
searchQuery (required) |
SearchQuery |
Kondisi kueri dan pengaturan kueri umum. |
|
columnsToGet (optional) |
SearchRequest.ColumnsToGet |
Kolom yang akan dikembalikan. Jika parameter ini tidak dikonfigurasi, hanya kolom kunci primer yang dikembalikan. |
|
timeoutInMillisecond (optional) |
int |
Timeout kueri tingkat permintaan dalam milidetik. Nilai default-nya adalah |
|
routingValues (optional) |
|
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.
|
Name |
Type |
Description |
|
query (required) |
Query |
Kondisi kueri. Atur parameter ini ke objek |
|
offset (optional) |
Integer |
Posisi awal kueri. |
|
limit (optional) |
Integer |
Jumlah maksimum baris yang dikembalikan. Atur parameter ini ke |
|
highlight (optional) |
Highlight |
Pengaturan ringkasan dan penyorotan untuk bidang |
|
collapse (optional) |
Collapse |
Pengaturan collapse bidang, yang menghapus duplikat hasil berdasarkan bidang tertentu. Untuk detail konfigurasi, lihat Collapse query results. |
|
sort (optional) |
Sort |
Urutan pengurutan hasil. Untuk detail konfigurasi, lihat Sort and paginate results. |
|
trackTotalCount (optional) |
int |
Jumlah maksimum baris yang cocok yang diharapkan untuk dihitung. Nilai default-nya adalah |
|
filter (optional) |
SearchFilter |
Filter yang diterapkan pada hasil |
|
aggregationList (optional) |
|
Pengaturan agregasi. Untuk detail konfigurasi, lihat Aggregation. |
|
groupByList (optional) |
|
Pengaturan pengelompokan. Untuk detail konfigurasi, lihat Aggregation. |
|
token (optional) |
byte[] |
Token paginasi. Atur parameter ini ke nilai |
Kondisi kueri
request.searchQuery.query adalah objek WildcardQuery yang berisi parameter berikut.
|
Name |
Type |
Description |
|
fieldName (required) |
String |
Nama bidang |
|
value (required) |
String |
Pola kueri yang mengandung karakter wildcard. Panjang maksimumnya adalah 32 karakter, dan pencocokan bersifat case-sensitive. Untuk bidang |
|
weight (optional) |
float |
Bobot relevansi kondisi kueri. Nilainya harus berupa bilangan titik mengambang positif. Nilai yang lebih besar memberikan kontribusi lebih besar terhadap skor relevansi BM25. Parameter ini tidak memengaruhi pencocokan atau jumlah baris yang dikembalikan. Parameter ini hanya memengaruhi urutan hasil ketika |
Kolom yang dikembalikan
request.columnsToGet adalah objek SearchRequest.ColumnsToGet yang berisi parameter berikut.
|
Name |
Type |
Description |
|
columns (optional) |
|
Kolom atribut yang akan dikembalikan. Atur parameter ini hanya jika |
|
returnAll (optional) |
boolean |
Menentukan apakah akan mengembalikan semua kolom atribut dari tabel data. Nilai default-nya adalah |
|
returnAllFromIndex (optional) |
boolean |
Menentukan apakah akan mengembalikan semua kolom atribut yang diindeks. Nilai default-nya adalah |
Nilai kembalian
search mengembalikan objek SearchResponse. Tabel berikut menjelaskan bidang intinya.
|
Name |
Type |
Description |
|
totalCount |
long |
Jumlah baris yang cocok. Panggil |
|
rows |
|
Baris yang dikembalikan oleh kueri ini. Panggil |
|
searchHits |
|
Hasil hit kueri. Panggil |
|
nextToken |
byte[] |
Token halaman berikutnya. Panggil |
|
isAllSuccess |
boolean |
Menunjukkan apakah semua partisi indeks berhasil dikueri. Panggil |