Kueri match phrase menggunakan Tablestore SDK for Java mencari bidang Text berdasarkan urutan dan posisi token, lalu mengembalikan baris yang memenuhi kondisi frasa tersebut beserta skor relevansinya.
Prasyarat
Instal Tablestore SDK for Java dan inisialisasi klien.
Deskripsi fitur
Kueri match phrase mencari token yang muncul secara berurutan dalam urutan dan posisi tertentu pada bidang Text. Untuk informasi mengenai tipe bidang, lihat String types. Nilai bidang dan teks kueri dianalisis menggunakan alat analisis (analyzer) yang dikonfigurasi saat indeks pencarian dibuat. Jika tidak ada analyzer yang dikonfigurasi, tokenisasi kata tunggal digunakan secara default.
Kueri match phrase mengharuskan semua token kueri muncul dalam urutan yang sama dan pada posisi yang berdekatan. Sebagai contoh, teks kueri this is cocok dengan this is tablestore, tetapi tidak cocok dengan this table is atau is this a table. Berbeda dengan itu, kueri match query hanya memeriksa keberadaan token yang cocok tanpa mempertimbangkan posisi berdekatan atau urutan seperti dalam teks kueri.
Jika bidang Text menggunakan fuzzy analyzer, kueri match phrase dapat memberikan pencocokan kabur (fuzzy matching) yang mirip dengan wildcard query dengan latensi kueri yang lebih rendah.
Contoh berikut menanyakan baris yang bidang description-nya secara berurutan berisi token tablestore dan durable sesuai urutan tersebut. Kueri ini mengembalikan hingga 10 baris, jumlah total baris yang cocok, serta skor relevansi.
String tableName = "example_table";
String indexName = "example_index";
MatchPhraseQuery matchPhraseQuery = new MatchPhraseQuery();
matchPhraseQuery.setFieldName("description");
matchPhraseQuery.setText("tablestore durable");
SearchQuery searchQuery = new SearchQuery();
searchQuery.setQuery(matchPhraseQuery);
searchQuery.setSort(new Sort(Collections.singletonList(new ScoreSort())));
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);
for (SearchHit hit : response.getSearchHits()) {
System.out.println(hit.getRow());
System.out.println(hit.getScore());
}
Parameter
Permintaan pencarian
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 umum kueri. |
|
columnsToGet (optional) |
SearchRequest.ColumnsToGet |
Pengaturan kolom yang dikembalikan. Jika parameter ini diabaikan, 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. Abaikan 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 |
|
collapse (optional) |
Collapse |
Pengaturan collapse hasil berdasarkan bidang tertentu, yang menghapus duplikat hasil berdasarkan bidang yang ditentukan. 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 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 pencocokan frasa
request.searchQuery.query adalah objek MatchPhraseQuery yang berisi parameter berikut.
|
Name |
Type |
Description |
|
fieldName (required) |
String |
Nama bidang indeks |
|
text (required) |
String |
Teks kueri. Teks ini dianalisis menggunakan analyzer bidang dan dicocokkan berdasarkan urutan dan posisi token. |
|
weight (optional) |
float |
Bobot kueri. Nilai default-nya adalah |
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-nya adalah |
|
returnAllFromIndex (optional) |
boolean |
Menentukan apakah semua kolom atribut yang diindeks dikembalikan. Nilai default-nya adalah |
Nilai kembalian
Respons kueri
Metode search mengembalikan objek SearchResponse. Tabel berikut menjelaskan bidang utamanya.
|
Name |
Type |
Description |
|
totalCount |
long |
Jumlah baris yang cocok. Panggil |
|
rows |
|
Baris yang dikembalikan dalam respons saat ini. Panggil |
|
searchHits |
|
Hasil pencarian. Panggil |
|
nextToken |
byte[] |
Token halaman berikutnya. Panggil |
|
isAllSuccess |
boolean |
Menunjukkan apakah semua partisi indeks berhasil ditanyakan. Panggil |
Hasil pencarian
response.searchHits[] adalah objek SearchHit yang berisi bidang utama berikut.
|
Name |
Type |
Description |
|
row |
Row |
Baris yang cocok. Panggil |
|
score |
Double |
Skor relevansi. Panggil |
|
highlightResultItem |
HighlightResultItem |
Hasil ringkasan dan penyorotan. Panggil |