Topik ini menjelaskan tiga tipe data string: Keyword, FuzzyKeyword, dan Text, serta cara memilih tipe yang sesuai untuk aplikasi Anda.
Informasi latar belakang
Tipe String merupakan salah satu tipe data paling umum dalam sistem data dan digunakan hampir di semua skenario bisnis. Dalam database relasional tradisional, tipe String diklasifikasikan menjadi berbagai jenis, seperti string panjang tetap dan string panjang variabel.
Di Tablestore, tipe string utama adalah String, yang mirip dengan tipe String dalam bahasa pemrograman seperti C++ dan Java. Untuk mendukung lebih banyak fitur, indeks pencarian mengklasifikasikan string ke dalam tiga tipe spesifik: Keyword (mirip dengan string standar), FuzzyKeyword (digunakan untuk kueri fuzzy), dan Text (mendukung tokenisasi untuk pencarian teks penuh).
Topik ini menjelaskan hubungan dan perbedaan antara ketiga tipe tersebut serta cara memilih tipe yang tepat untuk skenario bisnis Anda.
Pemetaan tipe data antara tabel dan indeks pencarian
Tipe String dalam tabel dapat dipetakan ke tipe Keyword, FuzzyKeyword, atau Text dalam indeks pencarian. Anda juga dapat menggunakan fitur kolom virtual untuk memetakan tipe Integer atau Double dalam tabel ke tipe Keyword, FuzzyKeyword, atau Text dalam indeks pencarian.
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
Tipe Keyword adalah tipe string yang paling umum digunakan, mirip dengan tipe string dalam database dan bahasa pemrograman seperti C++ dan Java.
Tipe Keyword mendukung kueri tepat (term query), kueri rentang (range query), kueri wildcard, kueri awalan (prefix query), kueri exists (untuk nilai null), pengurutan (sorting), serta operasi agregasi seperti GroupBy. Pada set data menengah hingga besar dengan lebih dari satu juta entri, performa kueri wildcard dan prefix menurun seiring peningkatan ukuran set data.
Gunakan tipe Keyword jika Anda tidak memerlukan kueri fuzzy atau pencarian teks penuh. Tipe ini diperlukan untuk fitur seperti pengurutan dan agregasi statistik.
Text
Tipe Text mirip dengan tipe teks dalam mesin pencari dan digunakan untuk pencarian teks penuh. Tipe ini mendukung berbagai metode tokenisasi, di mana sistem terlebih dahulu membagi string menjadi serangkaian token lalu menyimpannya secara terpisah.
Tipe Text menyediakan berbagai metode tokenisasi. Beberapa metode melakukan pembagian sederhana berdasarkan kata atau karakter, sedangkan metode lainnya berdasarkan semantik. Metode yang berbeda cocok untuk skenario bisnis yang berbeda. Untuk informasi selengkapnya, lihat Tokenisasi.
Gunakan tipe Text untuk fitur pencarian teks penuh.
FuzzyKeyword
Tipe FuzzyKeyword adalah tipe string yang mendukung kueri wildcard, awalan (prefix), dan akhiran (suffix) berkinerja tinggi, dengan performa kueri yang tetap stabil terlepas dari ukuran set data.
Gunakan tipe FuzzyKeyword ketika Anda memerlukan kueri wildcard, awalan, atau akhiran berkinerja tinggi (dalam orde milidetik).
Untuk melakukan kueri akhiran (suffix query), Anda dapat menggunakan SuffixQuery dengan tipe FuzzyKeyword. Sebagai alternatif, Anda dapat membalikkan data dan menggunakan PrefixQuery—yang berperforma lebih rendah—dengan tipe Keyword.
Bidang FuzzyKeyword tidak mendukung pengurutan atau agregasi statistik. Jika bidang tersebut juga perlu diurutkan atau diagregasi, 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 dengan tipe masing-masing: Keyword, Text, dan FuzzyKeyword. Untuk informasi selengkapnya, lihat Kolom virtual.
Perbedaan antar tipe
Tipe Keyword, Text, dan FuzzyKeyword mendukung fitur kueri yang berbeda dan memiliki panjang maksimum yang berbeda. Tabel berikut menjelaskan perbedaannya.
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 | × | × | ✓ |
× | × | ✓ | |
× | × | ✓ | |
✓ (Performa lebih rendah pada set data besar) | ✓ (Berkinerja tinggi) | × | |
✓ (Performa lebih rendah pada set data besar) | ✓ (Berkinerja tinggi) | × | |
Kueri akhiran | × | ✓ | × |
Panjang maksimum | 4 KB | 2 KB | 2 MB |