Kueri tepat (term query) menggunakan Tablestore SDK for Java mencocokkan nilai bidang atau token yang persis sama dengan kata kunci kueri, lalu mengembalikan baris yang cocok beserta jumlah totalnya.
Prasyarat
Instal Tablestore SDK for Java dan inisialisasi client.
Deskripsi fitur
Kueri tepat mencocokkan konten pada bidang tertentu yang nilainya persis sama dengan kata kunci kueri. Untuk bidang non-teks seperti Keyword dan Long, seluruh nilai bidang harus persis sama dengan kata kunci kueri. Untuk bidang Text (lihat String types), baris tersebut cocok jika salah satu token yang dihasilkan oleh alat analisis persis sama dengan kata kunci kueri. Kata kunci kueri itu sendiri tidak ditokenisasi.
Token yang dihasilkan untuk bidang Text dapat berubah seiring konfigurasi alat analisis, pembaruan algoritma, dan penggunaan bahasa. Hindari menggunakan kueri tepat untuk mencocokkan seluruh string asli dari bidang Text. Sebagai gantinya, gunakan kolom virtual untuk memetakan bidang sumber ke tipe Keyword, lalu lakukan kueri terhadap kolom virtual tersebut.
Untuk memanggil search, atur jenis kueri menjadi TermQuery, dan gunakan SearchQuery untuk mengonfigurasi jumlah baris yang dikembalikan, pelacakan jumlah total, serta perilaku kueri umum lainnya.
SearchResponse search(SearchRequest request)
Contoh berikut melakukan kueri terhadap baris yang nilai bidang category-nya persis sama dengan books, serta mengembalikan hingga 10 baris dan jumlah total baris yang cocok.
String tableName = "example_table";
String indexName = "example_index";
TermQuery termQuery = new TermQuery();
termQuery.setFieldName("category");
termQuery.setTerm(ColumnValue.fromString("books"));
SearchQuery searchQuery = new SearchQuery();
searchQuery.setQuery(termQuery);
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 (Search request)
request adalah objek SearchRequest yang berisi parameter berikut.
|
Name |
Type |
Description |
|
tableName (required) |
String |
Nama tabel. |
|
indexName (required) |
String |
Nama indeks pencarian. |
|
searchQuery (required) |
SearchQuery |
Kondisi kueri dan pengaturan kueri umum. |
|
columnsToGet (optional) |
SearchRequest.ColumnsToGet |
Pengaturan kolom yang dikembalikan. Jika Anda menghilangkan parameter ini, hanya kolom kunci primer yang dikembalikan. |
|
timeoutInMillisecond (optional) |
int |
Timeout kueri tingkat permintaan dalam milidetik. Nilai default-nya adalah |
|
routingValues (optional) |
|
Nilai kunci primer untuk bidang routing kustom. Hilangkan parameter ini jika indeks tidak menggunakan routing kustom. |
Pengaturan kueri
request.searchQuery adalah objek SearchQuery yang berisi parameter berikut.
|
Name |
Type |
Description |
|
query (required) |
Query |
Kondisi kueri. Atur parameter ini ke |
|
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 Text. Untuk detail konfigurasi, lihat Summary and highlighting. |
|
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 TermQuery yang berisi parameter berikut.
|
Name |
Type |
Description |
|
fieldName (required) |
String |
Nama bidang terindeks yang akan dikueri. |
|
term (required) |
ColumnValue |
Kata kunci kueri. Untuk bidang Text, seluruh nilai digunakan sebagai satu kata kunci dan tidak ditokenisasi. |
|
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 dikembalikan. Atur parameter ini hanya jika |
|
returnAll (optional) |
boolean |
Menentukan apakah semua kolom atribut dalam tabel dikembalikan. Nilai default: |
|
returnAllFromIndex (optional) |
boolean |
Menentukan apakah semua kolom atribut terindeks dikembalikan. Nilai default: |
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 pencocokan kueri. Panggil |
|
nextToken |
byte[] |
Token halaman berikutnya. Panggil |
|
isAllSuccess |
boolean |
Menunjukkan apakah semua partisi indeks berhasil dikueri. Panggil |