Jika muncul pengecualian "panjang nilai kolom lebih dari 32 untuk kueri [WILDCARD_QUERY]" selama penggunaan kueri wildcard, Anda dapat memperpendek string kueri atau menggunakan kueri frasa cocok.
Deskripsi masalah
Pengecualian berikut terjadi saat mengkueri data menggunakan kueri wildcard:
panjang nilai kolom lebih dari 32 untuk kueri [WILDCARD_QUERY]
Penyebab
String yang mengandung karakter wildcard melebihi batas 32 karakter.
Solusi
Memperpendek string kueri
Perpendek string kueri agar panjangnya tidak melebihi 32 karakter.
Kueri wildcard berbasis tokenisasi
Indeks pencarian mendukung kueri wildcard berbasis tokenisasi untuk menerapkan kueri kabur yang lebih efisien. Saat menggunakan kueri wildcard berbasis tokenisasi, panjang string kueri tidak dibatasi. Namun, konten asli dibatasi maksimal 1.024 karakter. Konten yang melebihi batas ini akan dipotong secara otomatis, dan hanya 1.024 karakter pertama yang disimpan.
Ubah skema indeks pencarian secara dinamis.
Berdasarkan evaluasi dampak bisnis, ubah kolom target atau tambahkan kolom virtual, atur tipe ke Teks, dan atur metode tokenisasi ke tokenisasi kabur. Untuk informasi lebih lanjut, lihat Ubah skema indeks pencarian secara dinamis dan Kolom virtual.
Gunakan kueri frasa cocok (MatchPhraseQuery).
Untuk informasi lebih lanjut, lihat Kueri wildcard berbasis tokenisasi.
Skenario Kueri Wildcard SQL
Saat menggunakan pernyataan SQL untuk mengkueri data, jika tabel data memiliki indeks pencarian yang mencakup semua kolom data yang terlibat dalam pernyataan SQL, mesin SQL secara otomatis memilih indeks pencarian ini untuk kueri data. Dalam hal ini, saat menjalankan kueri wildcard SQL (seperti operator LIKE digabungkan dengan karakter wildcard %), panjang string kueri juga dibatasi (maksimum 32 karakter).
Anda dapat menyelesaikan masalah ini melalui langkah-langkah berikut.
Ubah skema indeks pencarian secara dinamis.
Berdasarkan evaluasi dampak bisnis, ubah kolom target atau tambahkan kolom virtual, atur tipe ke Teks, dan atur metode tokenisasi ke tokenisasi kabur. Untuk informasi lebih lanjut, lihat Ubah skema indeks pencarian secara dinamis dan Kolom virtual.
Buat tabel pemetaan untuk indeks pencarian.
Contoh berikut membuat tabel pemetaan bernama example_table__example_table_index untuk indeks pencarian example_table_index dari tabel data example_table.
CREATE TABLE `example_table__example_table_index`(
`pk` MEDIUMTEXT,
`attr` MEDIUMTEXT,
`attr_virtual` MEDIUMTEXT #kolom virtual
)
ENGINE='searchindex',
ENGINE_ATTRIBUTE='{"index_name":"example_table_index","table_name":"example_table"}';
Gunakan kueri frasa cocok (TEXT_MATCH_PHRASE) dalam pernyataan SQL.
Contoh berikut mengkueri data di tabel pemetaan indeks pencarian example_table__example_table_index di mana nilai kolom virtual attr_virtual cocok dengan string "tablestore is super cool!".
select * from example_table__example_table_index where TEXT_MATCH_PHRASE(attr_virtual, "tablestore is super cool!");