Jika muncul pengecualian "length of field value is longer than 32 for the [WILDCARD_QUERY] query" saat menjalankan wildcard query, Anda dapat memperpendek string kueri atau menggunakan match phrase query.
Deskripsi masalah
Pengecualian berikut muncul saat melakukan kueri data menggunakan wildcard query:
length of field value is longer than 32 for the [WILDCARD_QUERY] query
Penyebab
String yang mengandung karakter wildcard melebihi batas 32 karakter.
Solusi
Perpendek string kueri
Perpendek string kueri sehingga panjangnya tidak melebihi 32 karakter.
Wildcard query berbasis tokenisasi
Search index mendukung wildcard query berbasis tokenisasi untuk mengimplementasikan kueri fuzzy yang lebih efisien. Dengan wildcard query berbasis tokenisasi, panjang string kueri tidak dibatasi. Namun, konten asli dibatasi hingga maksimal 1.024 karakter. Konten yang melebihi batas ini akan dipotong secara otomatis, dan hanya 1.024 karakter pertama yang dipertahankan.
-
Modifikasi skema search index secara dinamis.
Berdasarkan evaluasi dampak bisnis, modifikasi kolom target atau tambahkan kolom virtual, atur tipe ke Text, dan pilih metode tokenisasi fuzzy tokenization. Untuk informasi selengkapnya, lihat Dynamically modify search index schema dan Virtual columns.
-
Gunakan match phrase query (MatchPhraseQuery).
Untuk informasi selengkapnya, lihat Token-based wildcard query.
Skenario wildcard query SQL
Saat menggunakan Pernyataan SQL untuk mengkueri data, jika tabel data memiliki search index yang mencakup semua kolom yang terlibat dalam Pernyataan SQL tersebut, mesin SQL akan secara otomatis memilih search index ini untuk eksekusi kueri. Dalam kasus ini, panjang string pada wildcard query SQL (misalnya operator LIKE yang dikombinasikan dengan karakter wildcard %) dibatasi hingga maksimal 32 karakter.
Anda dapat mengatasi keterbatasan ini dengan langkah-langkah berikut.
-
Modifikasi skema search index secara dinamis.
Berdasarkan evaluasi dampak bisnis, modifikasi kolom target atau tambahkan kolom virtual, atur tipe ke Text, dan pilih metode tokenisasi fuzzy tokenization. Untuk informasi selengkapnya, lihat Dynamically modify search index schema dan Virtual columns.
-
Membuat tabel pemetaan untuk indeks pencarian.
Contoh berikut membuat tabel pemetaan bernama example_table__example_table_index untuk search index example_table_index dari tabel data example_table.
CREATE TABLE `example_table__example_table_index`(
`pk` MEDIUMTEXT,
`attr` MEDIUMTEXT,
`attr_virtual` MEDIUMTEXT #virtual column
)
ENGINE='searchindex',
ENGINE_ATTRIBUTE='{"index_name":"example_table_index","table_name":"example_table"}';
-
Gunakan permintaan pencocokan frasa (TEXT_MATCH_PHRASE) dalam Pernyataan SQL.
Contoh berikut melakukan kueri data pada tabel pemetaan search index example_table__example_table_index di mana nilai kolom virtual attr_virtual sesuai dengan string "tablestore is super cool!".
select * from example_table__example_table_index where TEXT_MATCH_PHRASE(attr_virtual, "tablestore is super cool!");