Indeks pencarian mendukung tiga tipe data string: Keyword, FuzzyKeyword, dan Text. Pilih tipe yang sesuai berdasarkan kebutuhan kueri Anda.
Latar Belakang
Dalam tabel data Tablestore, tipe string utama adalah String — setara dengan tipe string di C++ dan Java. Indeks pencarian membagi tipe tunggal ini menjadi tiga varian khusus untuk mendukung pola kueri yang berbeda:
|
Tipe |
Paling cocok untuk |
|
Keyword |
Pencocokan tepat, kueri rentang, pengurutan, dan agregasi |
|
FuzzyKeyword |
Kueri wildcard, awalan, dan akhiran berkinerja tinggi pada set data berapa pun ukurannya |
|
Text |
Pencarian teks penuh dengan tokenisasi dan penilaian relevansi |
Pemetaan tipe data
Tipe String dalam tabel data dipetakan langsung ke Keyword, FuzzyKeyword, atau Text dalam indeks pencarian. Dengan menggunakan fitur kolom virtual, Anda juga dapat memetakan tipe Integer atau Double ke salah satu dari ketiga tipe string tersebut.
|
Tipe data dalam tabel |
Metode |
Tipe data dalam indeks pencarian |
|
String |
Penggunaan langsung |
Keyword |
|
FuzzyKeyword |
||
|
Text |
||
|
Integer |
Kolom virtual |
Keyword |
|
FuzzyKeyword |
||
|
Text |
||
|
Double |
Kolom virtual |
Keyword |
|
FuzzyKeyword |
||
|
Text |
Tipe data
Keyword
Keyword memperlakukan string sebagai nilai tunggal yang tidak dapat dibagi — mirip dengan bidang string dalam database relasional. Tipe ini mendukung kueri tepat (term query), kueri istilah (terms query), kueri rentang (range query), kueri wildcard, kueri awalan (prefix query), serta kueri exists (untuk nilai null), selain juga pengurutan dan agregasi statistik (termasuk GroupBy).
Contoh penggunaan Keyword meliputi: ID pengguna, kode status, alamat email, kode negara, dan bidang lain yang memerlukan pencocokan nilai persis atau agregasi.
Pada set data dengan lebih dari satu juta entri, kinerja kueri wildcard dan awalan menurun seiring pertumbuhan ukuran data. Gunakan FuzzyKeyword jika diperlukan pencocokan fuzzy berkinerja tinggi pada skala besar.
Text
Text dirancang untuk pencarian teks penuh. Sebelum diindeks, sistem membagi string menjadi token menggunakan metode tokenisasi yang Anda konfigurasikan, lalu mengindeks setiap token secara terpisah. Saat kueri, string kueri melalui proses tokenisasi yang sama sebelum dicocokkan dengan indeks.
Karena Text mengindeks token, bukan nilai aslinya, tipe ini mendukung penilaian relevansi, penyorotan hasil dan ringkasan, kueri cocok (match query), serta permintaan pencocokan frasa (match phrase query). Namun, tipe ini tidak mendukung kueri kata kunci tepat, pengurutan, atau agregasi.
Contoh penggunaan Text meliputi: deskripsi produk, konten artikel, ulasan pengguna, dan bidang lain tempat Anda mencari kata atau frasa dalam string yang lebih panjang.
Untuk metode tokenisasi yang tersedia, lihat Tokenisasi.
FuzzyKeyword
FuzzyKeyword dioptimalkan untuk kueri wildcard, awalan, dan akhiran. Tipe ini menyimpan substring dari setiap nilai bidang dalam indeks secara prakomputasi, sehingga kueri memindai struktur indeks yang ringkas, bukan memindai nilai baris per baris. Kinerja kueri wildcard dan awalan tetap cepat secara konsisten terlepas dari ukuran set data.
Contoh penggunaan FuzzyKeyword meliputi: pesan log, jalur file, SKU produk, dan bidang lain tempat pengguna mengetik string parsial untuk pencarian.
Untuk kueri akhiran (suffix query), gunakan SuffixQuery dengan tipe FuzzyKeyword. Alternatif lain — membalikkan data dan menjalankan PrefixQuery pada bidang Keyword — tersedia tetapi memberikan kinerja lebih rendah.
Bidang FuzzyKeyword tidak mendukung pengurutan atau agregasi statistik. Untuk mengurutkan atau mengagregasi bidang FuzzyKeyword, gunakan fitur kolom virtual untuk memetakannya ke tipe Keyword.
Jika suatu bidang memerlukan beberapa fitur kueri seperti kueri tepat, kueri fuzzy berkinerja tinggi, dan pencarian teks penuh, gunakan fitur kolom virtual untuk memetakan satu kolom tabel ke tiga kolom indeks pencarian masing-masing dengan tipe Keyword, Text, dan FuzzyKeyword. Untuk informasi selengkapnya, lihat Kolom virtual.
Perbandingan tipe
Ketiga tipe string berbeda dalam fitur kueri yang didukung dan panjang maksimum bidang.
Tanda centang (✓) menunjukkan bahwa fitur tersebut didukung. Tanda silang (×) menunjukkan bahwa fitur tersebut tidak didukung.
|
Fitur |
Keyword |
FuzzyKeyword |
Text |
|
✓ |
× |
× |
|
|
✓ |
× |
× |
|
|
✓ |
× |
× |
|
|
✓ |
✓ |
✓ |
|
|
✓ |
× |
× |
|
|
✓ |
× |
× |
|
|
× |
× |
✓ |
|
|
Pencarian teks penuh: Skor relevansi |
× |
× |
✓ |
|
Pencarian teks penuh: Penyorotan dan ringkasan |
× |
× |
✓ |
|
× |
× |
✓ |
|
|
× |
× |
✓ |
|
|
✓ (Kinerja lebih rendah pada set data besar) |
✓ (Berkinerja tinggi) |
× |
|
|
✓ (Kinerja lebih rendah pada set data besar) |
✓ (Berkinerja tinggi) |
× |
|
|
Kueri akhiran |
× |
✓ |
× |
|
Panjang maksimum |
4 KB |
2 KB |
2 MB |