Dokumen ini menjelaskan cara membuat dan menggunakan indeks teks penuh pada In-Memory Column Index (IMCI) PolarDB for MySQL. Dengan mengonfigurasi indeks terbalik melalui COMMENT tingkat kolom, Anda dapat memanfaatkan sintaks MATCH...AGAINST atau kueri LIKE yang dioptimalkan secara otomatis untuk mencapai pencarian fuzzy dalam hitungan milidetik. Fitur ini didasarkan pada mekanisme indeks terbalik dan pencocokan kata kunci IMCI. Untuk prinsip detailnya, lihat Analisis fitur pencarian teks penuh dalam IMCI.
Persyaratan versi
Versi kluster Anda harus memenuhi persyaratan berikut:
MySQL 8.0.1, dan versi minor harus 8.0.1.1.52 atau lebih baru.
MySQL 8.0.2, dan versi minor harus 8.0.2.2.32 atau lebih baru.
Sintaks
PolarDB IMCI memungkinkan Anda membuat, memodifikasi, atau menghapus indeks terbalik dengan menentukan comment kolom saat membuat tabel atau memodifikasi comment kolom melalui DDL.
Sintaks
Definisikan indeks teks penuh saat membuat tabel:
CREATE TABLE table_name ( column_name Data_Type COMMENT "imci_fts(type=VALUE [,KEY=VALUE])" ) COMMENT 'columnar=1';Gunakan
ALTERuntuk memodifikasi kolom guna menambahkan atau mengubah indeks:ALTER TABLE table_name MODIFY column_name Data_Type COMMENT "imci_fts(type=VALUE [,KEY=VALUE])";PentingMemodifikasi
COMMENTdapat memicu pembangunan ulang indeks terbalik. Untuk tabel besar, kami menyarankan Anda melakukan operasi ini selama jam sepi.Gunakan
ALTERuntuk memodifikasi kolom guna menghapus indeks:ALTER TABLE table_name MODIFY column_name Data_Type COMMENT 'imci_fts(enable=0)';
Parameter
Anda harus mengatur COMMENT menjadi 'columnar=1' pada tingkat tabel untuk membuat tabel penyimpanan kolom IMCI. Indeks teks penuh dikonfigurasi melalui COMMENT kolom dalam format imci_fts(TYPE=VALUE[, KEY=VALUE]...), di mana TYPE wajib dan KEY opsional. Beberapa pasangan KEY dipisahkan dengan koma.
Jenis tokenizer (parameter
type):Tokenizer
typevalueDeskripsi
token
0 (default)
Memisahkan teks berdasarkan karakter non-alfanumerik seperti spasi dan tanda baca. Cocok untuk teks bahasa Inggris atau teks terformat.
ngram
1
Memisahkan teks menjadi potongan karakter dengan panjang tetap (dikontrol oleh parameter
len). Cocok untuk pencocokan kabur lintas bahasa apa pun.jieba
2
Tokenizer bahasa Mandarin berbasis kamus. Cocok untuk pencarian semantik bahasa Mandarin.
ik
3
Tokenizer bahasa Mandarin lain yang banyak digunakan.
json
4
Mengekstrak konten dari bidang JSON menggunakan ekspresi JSONPath (memerlukan parameter
expr) untuk membangun indeks.whole
5
Tidak memisahkan teks. Seluruh kolom diperlakukan sebagai satu kata kunci. Terutama digunakan untuk mempercepat kueri kesamaan (seperti = atau IN).
mysql ngram
6
Tokenizer ngram yang kompatibel dengan MySQL.
Parameter konfigurasi (
KEY-VALUE):Parameter (KEY)
Default
Deskripsi
Jenis tokenizer yang berlaku (
type)enable
1
1: Membuat indeks terbalik (default)0: Menghapus indeks terbalik
Semua
type
0
Menentukan jenis tokenizer (lihat tabel di atas)
Semua
len
-
Panjang token untuk tokenizer
ngram. Rentang valid:[1, 256)type=1(ngram),type=6(mysql ngram)mode
0
Mode tokenizer:
jieba (
type=2):0: Mode akurat (default)1: Mode penuh2: Mode mesin pencari
ik (
type=3):0: Mode cerdas (default)1: Mode detail paling halus
json (
type=4):0: Mode array lama (default)1: Mode array2: Mode pasangan kunci-nilai, seperti"*.id","[*].id", dll.
type=2, 3, 4score
0
Apakah mendukung pengurutan:
0: Menonaktifkan pembuatan frekuensi kata kunci (TF) dan frekuensi dokumen (DF), mengabaikan pengurutan (default)1: Mengaktifkan pengurutan skor relevansi untukMATCH ... AGAINST
Semua
seg_size
0
Menentukan ukuran segmen indeks terbalik:
0: Menggunakan nilai variabel sistemimci_fts_build_segment_sizeNilai lain: Menentukan ukuran segmen eksak
Semua
pack_cnt_min
0
Jumlah minimum unit data untuk pembuatan indeks terbalik:
0: Menggunakan nilai variabel sistemimci_fts_build_packcnt_minNilai lain: Menentukan nilai eksak
Semua
pack_cnt_max
0
Jumlah maksimum unit data untuk pembuatan indeks terbalik:
0: Menggunakan nilai variabel sistemimci_fts_build_packcnt_maxNilai lain: Menentukan nilai eksak
Semua
stop_word
0
Apakah mendukung stop words:
0: Tidak didukung (default)1: Didukung
Semua
case_sensitive
0
Apakah pencocokan peka huruf besar/kecil:
0: Tidak peka huruf besar/kecil (default)1: Peka huruf besar/kecil2: Ditentukan oleh pengaturancollatekolom (mode kompatibel MySQL)3: Sepenuhnya ditentukan oleh pengaturancollatekolom (sepenuhnya dikontrol olehcollate)
Semua
phrase
0
Apakah merekam informasi posisi untuk kueri frasa:
0: Tidak merekam informasi posisi (default)1: Merekam informasi posisi
Semua
synonym
0
Apakah mendukung sinonim:
0: Tidak didukung (default)1: Didukung, mode kueri2: Didukung, mode indeks (memerlukan pembangunan ulang indeks terbalik)
Semua
Contoh
1: Membuat indeks teks penuh
Buat indeks teks penuh pada kolom yang memerlukan pencarian teks, dan pilih tokenizer berdasarkan kebutuhan bisnis Anda.
Buat tabel uji: Buat tabel dengan indeks penyimpanan kolom.
CREATE TABLE t1 ( id INT PRIMARY KEY, title VARCHAR(32) COMMENT "imci_fts(type=2)" )CHARSET utf8mb4 COMMENT 'columnar=1';(Opsional) Modifikasi indeks teks penuh: Gunakan pernyataan
ALTER TABLEuntuk menambahkan indeks teks penuh ke kolomtitledan menentukan mode mesin pencari tokenizerjieba.ALTER TABLE t1 MODIFY title VARCHAR(32) COMMENT "imci_fts(type=2,mode=0)";(Opsional) Verifikasi hasil tokenisasi: Sebelum memilih tokenizer, Anda dapat menggunakan fungsi
dbms_imci.fts_tokenizeuntuk melihat pratinjau bagaimana tokenizer berbeda memproses teks.CALL dbms_imci.fts_tokenize("I am PolarDB"); -- Hasil: ["i", "am", "polardb"] CALL dbms_imci.fts_tokenize("I am PolarDB", "type=1"); -- Hasil: ["i ", " a", "am", "m ", " p", "po", "ol", "ar", "rd", "db"] CALL dbms_imci.fts_tokenize("I am PolarDB", "type=2"); -- Hasil: ["PolarDB"] CALL dbms_imci.fts_tokenize("I am PolarDB", "type=2,mode=1"); -- Hasil: ["polardb"]
2: Menjalankan kueri pencarian teks penuh
Setelah indeks dibuat, IMCI membangunnya di latar belakang. Setelah pembangunan selesai, Anda dapat menjalankan kueri teks menggunakan pernyataan MATCH...AGAINST atau LIKE yang dioptimalkan.
Gunakan kueri
MATCH...AGAINST:-- Masukkan data sampel INSERT INTO t1 VALUES (16, 'polarDB full-text index feature title'), (17, 'database title performance optimization'); -- Temukan baris di mana kolom title berisi "title" SELECT * FROM t1 WHERE MATCH(title) AGAINST("title");Gunakan
EXPLAINuntuk melihat rencana eksekusi. Jika operatorFtsTableScanmuncul, kueri telah mengenai indeks teks penuh.EXPLAIN SELECT * FROM t1 WHERE MATCH(title) AGAINST("title") AND id > 10; +----+------------------------+------+-----------------------------------------------------------------+ | ID | Operator | Name | Extra Info | +----+------------------------+------+-----------------------------------------------------------------+ | 1 | Select Statement | | IMCI Execution Plan (max_dop = 32, max_query_mem = 41230008320) | | 2 | └─Compute Scalar | | | | 3 | └─FILTER | | Cond:(t1.id > 10) | | 4 | └─FtsTableScan | t1 | Term:("title") Fallback:(t1.title LIKE "%title%") | +----+------------------------+------+-----------------------------------------------------------------+Fallbackmenunjukkan bahwa untuk data inkremental yang belum diindeks, sistem secara otomatis menggunakan pemindaian tambahanLIKEuntuk memastikan kelengkapan hasil.Percepat kueri
LIKE: Untuk kompatibilitas dengan kode aplikasi yang ada, IMCI mendukung konversi otomatis kueriLIKEtertentu menjadiMATCH...AGAINSTuntuk percepatan.SET imci_convert_like_to_match = on; EXPLAIN SELECT * FROM t1 WHERE title LIKE "%title%"; +----+------------------------+------+-----------------------------------------------------------------+ | ID | Operator | Name | Extra Info | +----+------------------------+------+-----------------------------------------------------------------+ | 1 | Select Statement | | IMCI Execution Plan (max_dop = 32, max_query_mem = 41230008320) | | 2 | └─Compute Scalar | | | | 3 | └─FILTER | | Cond:(t1.title LIKE "%title%") | | 4 | └─FtsTableScan | t1 | Term:("title") Fallback:(t1.title LIKE "%title%") | +----+------------------------+------+-----------------------------------------------------------------+Rencana eksekusi juga menampilkan operator
FtsTableScan, yang mengonfirmasi bahwa kueriLIKEtelah berhasil dipercepat.Konversi
MATCHkeLIKE: Ketika tidak ada indeks teks penuh, untuk memastikan kueri tetap berjalan dengan benar sambil memanfaatkan indeks yang ada sebanyak mungkin, IMCI dapat mengonversiMATCHmenjadiLIKE, dan rencana eksekusi menunjukkan pemindaian tabel penuh.SET imci_enable_query_fts_like = on; EXPLAIN SELECT * FROM t1 WHERE MATCH(title) AGAINST("title"); +----+----------------------+------+-----------------------------------------------------------------+ | ID | Operator | Name | Extra Info | +----+----------------------+------+-----------------------------------------------------------------+ | 1 | Select Statement | | IMCI Execution Plan (max_dop = 32, max_query_mem = 41230008320) | | 2 | └─Compute Scalar | | | | 3 | └─Table Scan | t1 | Cond:(title LIKE "%title%") | +----+----------------------+------+-----------------------------------------------------------------+
3: Mengelola dan memantau indeks
Kueri status pembangunan dan metadata indeks, serta hapus indeks ketika tidak lagi diperlukan.
Pantau progres dan status pembangunan indeks:
-- Lihat semua indeks terbalik SHOW imci indexes fulltext; SELECT * FROM information_schema.imci_fts_indexes; -- Lihat indeks terbalik tertentu SHOW imci indexes fulltext FOR [db_name].[table_name]; SELECT * FROM information_schema.imci_fts_indexes WHERE schema_name='[db_name]' AND table_name='[table_name]'; -- Lihat metadata indeks terbalik tertentu SELECT * FROM information_schema.imci_fts_index_metas WHERE schema_name='[db_name]' AND table_name='[table_name]' AND column_name='[column_name]'; -- Lihat data segmen indeks terbalik tertentu SELECT * FROM information_schema.imci_fts_index_segs WHERE schema_name='[db_name]' AND table_name='[table_name]' AND column_name='[column_name]'; -- Lihat data penyimpanan kolom indeks terbalik tertentu SELECT * FROM information_schema.imci_fts_index_packs WHERE schema_name='[db_name]' AND table_name='[table_name]' AND column_name='[column_name]';Hapus indeks teks penuh: Jika Anda tidak lagi memerlukan indeks teks penuh pada kolom, Anda dapat menghapusnya dengan memodifikasi
COMMENTkolom tersebut.ALTER TABLE t1 MODIFY title VARCHAR(255) COMMENT 'imci_fts(enable=0)';
4: Variabel sistem inti
Parameter | Cakupan | Deskripsi |
imci_enable_fts | Global | Apakah mengizinkan pembuatan indeks terbalik pada node penyimpanan kolom.
|
imci_enable_fts_query | Global / Session | Apakah mengizinkan penggunaan indeks terbalik pada node penyimpanan kolom.
|
imci_fts_build_pack_cnt_min | Global | Jumlah minimum blok data penyimpanan kolom per indeks terbalik selama pembangunan indeks. Rentang valid: 0-8192. Nilai default: 8. Nilai 0 berarti pembangunan dijeda sementara. |
imci_fts_build_pack_cnt_max | Global | Jumlah maksimum blok data penyimpanan kolom per indeks terbalik selama pembangunan indeks. Rentang valid: 0-8192. Nilai default: 128. |
imci_fts_build_segment_size | Global | Ukuran segmen untuk setiap indeks terbalik selama pembangunan indeks. Rentang valid: 0-4294967295. Nilai default: 536870912 (512 MB), dalam byte. |
imci_fts_lru_cache_capacity | Global | Ruang cache untuk kamus indeks terbalik. Rentang valid: [DBNodeClassMemory*1/10~DBNodeClassMemory*1/2]. Nilai default: [DBNodeClassMemory*10/100]. |
imci_enable_fts_pruner | Global / Session | Apakah mengaktifkan optimasi pra-penyaringan untuk indeks terbalik.
|
imci_convert_like_to_match | Global / Session | Apakah mengaktifkan konversi
|
imci_enable_query_fts_like | Global / Session | Apakah mengaktifkan konversi
|
imci_enable_match_expr_fallback | Global / Session | Apakah mengaktifkan kueri pada data inkremental yang belum diindeks oleh indeks terbalik.
|
imci_fts_build_fts_cnt | Global | Jumlah thread pembangunan indeks terbalik konkuren. Rentang valid: 0-512. Nilai default: 4. Catatan Parameter ini hanya berlaku untuk versi berikut:
|
imci_fts_user_dict_table | Global | Mengonfigurasi kamus kustom untuk indeks teks penuh. Format: database_name/table_name. Catatan Parameter ini hanya berlaku untuk versi berikut:
|
imci_fts_user_dict_update | Global | Apakah memuat ulang kamus kustom yang ditentukan oleh
Catatan Parameter ini hanya berlaku untuk versi berikut:
|
imci_convert_json_overlap_to_match | Global/Session | Mengontrol apakah mengaktifkan percepatan
|
imci_convert_json_contains_to_match | Global/Session | Mengontrol apakah mengaktifkan percepatan
|
imci_convert_json_extract_to_match | Global/Session | Mengontrol apakah mengaktifkan percepatan
|
imci_convert_equal_to_match | Global/Session | Mengontrol apakah mengaktifkan percepatan ekspresi
|
imci_convert_in_to_match | Global/Session | Mengontrol apakah mengaktifkan percepatan ekspresi
|
imci_convert_ne_to_match | Global/Session | Mengontrol apakah mengaktifkan percepatan ekspresi
|
imci_enable_fts_synonym | Global / Session | Apakah mendukung sinonim.
|
imci_enable_fts_parse_term_with_and | Global / Session | Apakah menggunakan evaluasi
|
imci_enable_fts_parse_term_with_phrase | Global / Session | Apakah menerapkan pencocokan posisi ketat untuk string kueri yang telah ditokenisasi dalam MODE
|
imci_fts_stop_word_table | Global | Mengonfigurasi stop words kustom untuk indeks teks penuh. Format: |
imci_fts_stop_word_update | Global | Apakah memuat ulang stop words kustom yang ditentukan oleh
|
imci_fts_synonym_table | Global | Mengonfigurasi sinonim kustom untuk indeks teks penuh. Format: |
imci_fts_synonym_update | Global | Apakah memuat ulang sinonim kustom yang ditentukan oleh
|
Parameter dengan cakupan GLOBAL tidak dapat dimodifikasi langsung dari command line. Parameter tersebut hanya dapat diubah melalui Konsol. Saat dieksekusi dari command line, cakupan default adalah SESSION.
Kamus kustom
Fitur indeks teks penuh IMCI mendukung kamus kustom melalui tabel kustom untuk mencapai hasil tokenisasi yang lebih sesuai dengan skenario bisnis Anda.
Buat tabel kamus kustom
Pertama, definisikan tabel dengan struktur yang sama seperti tabel my_fts_dict. Nama kolom harus sesuai dengan nama kolom pada tabel my_fts_dict.
type: Jenis tokenizer. Hanya tokenizer jieba (type 2) dan tokenizer IK (type 3) yang didukung.
word: Kata dalam kamus.
is_added: Tambahkan kata ke kamus kustom (nilai 1) atau hapus (nilai 2).
CREATE TABLE my_fts_dict ( `type` INT UNSIGNED NOT NULL COMMENT '2 for jieba, 3 for ik', `word` VARCHAR(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT 'dict word', `is_added` INT UNSIGNED NOT NULL DEFAULT 1 COMMENT '1 for add, 2 for delete' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT='imci fts user dict';Kamus kustom itu sendiri adalah tabel InnoDB. Operasi baca dan tulis sama seperti tabel biasa.
Tambahkan kata:
INSERT INTO my_fts_dict VALUES(2, "PolarDB", 1)Hapus kata:
INSERT INTO my_fts_dict(type, word, is_added) VALUES(2, "PolarDB", 2); or DELETE FROM my_fts_dict WHERE type=2 AND word = "PolarDB";
Konfigurasi kamus kustom
Setelah membuat tabel kamus kustom, konfigurasikan parameter
imci_fts_user_dict_table. Misalnya,test/my_fts_dict'.SET GLOBAL imci_fts_user_dict_table = 'test/my_fts_dict';Jika
imci_fts_user_dict_tablesudah diatur, Anda juga dapat mengaturimci_fts_user_dict_updateke ON untuk memicu pemuatan ulang kamus kustom yang ditentukan olehimci_fts_user_dict_table.SET GLOBAL imci_fts_user_dict_update = ON;CatatanKamus kustom baru hanya berlaku untuk indeks terbalik yang dibangun setelahnya. Untuk menerapkannya pada indeks terbalik yang sudah ada, Anda harus membangun ulang indeks terbalik tersebut.
Sinonim kustom
Fitur indeks teks penuh IMCI mendukung sinonim kustom melalui tabel kustom.
Buat tabel sinonim kustom
Pertama, definisikan tabel dengan struktur yang sama seperti tabel my_synonym_dict. Nama kolom harus sesuai dengan nama kolom pada tabel my_synonym_dict.
word: Daftar sinonim. Kata berbeda dipisahkan dengan koma.type: Jenis sinonim.0menunjukkan bahwa semua kata dalam daftar saling bersinonim. Misalnya,"db,database,polardb"berarti"db" <=> "database" <=> "polardb". Saat Anda mencari"db","database", atau"polardb", semua data yang cocok dengan"db","database", dan"polardb"dikembalikan.1menunjukkan bahwa kata pertama dalam daftar adalah istilah utama dan yang lainnya adalah sinonimnya. Misalnya,"db,database,polardb"berarti"db" => "database", "polardb". Saat Anda mencari"db", semua data yang cocok dengan"db","database", dan"polardb"dikembalikan. Namun, saat Anda mencari"database", hanya data yang cocok dengan"database"yang dikembalikan.
CREATE TABLE my_synonym_dict (
`word` VARCHAR(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT 'comma-separated synonyms',
`type` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '0 for equivalent, 1 for mapping'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT='imci fts synonym';Tabel sinonim kustom itu sendiri adalah tabel InnoDB. Operasi baca dan tulis sama seperti tabel biasa.
Tambahkan kata:
INSERT INTO my_synonym_dict VALUES("db,database,polardb", 0); INSERT INTO my_synonym_dict VALUES("imci,clickhouse,duckdb", 1);Hapus kata:
DELETE FROM my_synonym_dict WHERE type=1 AND word = "imci,clickhouse,duckdb";
Konfigurasi sinonim kustom
Setelah membuat tabel sinonim kustom, konfigurasikan parameter imci_fts_synonym_table. Misalnya, test/my_synonym_dict, di mana test adalah nama database dan my_synonym_dict adalah nama tabel.
SET GLOBAL imci_fts_synonym_table = 'test/my_synonym_dict';Jika imci_fts_synonym_table sudah diatur, Anda juga dapat mengatur imci_fts_synonym_update ke ON untuk memicu pemuatan ulang sinonim kustom yang ditentukan oleh imci_fts_synonym_table.
SET GLOBAL imci_fts_synonym_update = ON;Jika synonym diatur ke mode indeks (misalnya, COMMENT "imci_fts(type=0 synonym=1)"), sinonim yang diperbarui hanya berlaku untuk data yang baru diindeks. Untuk menerapkan perubahan ke semua data, Anda harus membangun ulang indeks teks penuh.
Stop words kustom
Fitur indeks teks penuh IMCI mendukung stop words kustom melalui tabel kustom.
Buat tabel stop word kustom
Pertama, definisikan tabel dengan struktur yang sama seperti tabel my_stop_words. Nama kolom harus sesuai dengan my_stop_words.
word: Stop word.is_added: Tambahkan kata ke kamus kustom (nilai 1) atau hapus (nilai 0).
CREATE TABLE my_stop_words (
`word` VARCHAR(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT 'stop word',
`is_added` INT UNSIGNED NOT NULL DEFAULT 1 COMMENT '1 for add, 0 for delete'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT='imci fts stop word';Tabel stop word kustom itu sendiri adalah tabel InnoDB. Operasi baca dan tulis sama seperti tabel biasa.
Tambahkan kata:
INSERT INTO my_stop_words VALUES("am", 1); INSERT INTO my_stop_words VALUES("chinese", 1);Hapus kata:
INSERT INTO my_stop_words(word, is_added) VALUES("chinese", 0); -- or DELETE FROM my_stop_words WHERE is_added=1 AND word = "chinese";
Konfigurasi stop words kustom
Setelah membuat tabel stop word kustom, konfigurasikan parameter imci_fts_stop_word_table. Misalnya, test/my_stop_words, di mana test adalah nama database dan my_stop_words adalah nama tabel.
SET GLOBAL imci_fts_stop_word_table = 'test/my_stop_words';Jika imci_fts_stop_word_table sudah diatur, Anda juga dapat mengatur imci_fts_stop_word_update ke ON untuk memicu pemuatan ulang stop words kustom yang ditentukan oleh imci_fts_stop_word_table.
SET GLOBAL imci_fts_stop_word_update = ON;Stop words kustom baru hanya berlaku untuk indeks terbalik yang dibangun setelahnya. Untuk menerapkannya pada indeks terbalik yang sudah ada, Anda harus membangun ulang indeks terbalik tersebut.
FAQ
Q1: Bagaimana cara memilih tokenizer yang tepat?
Teks bahasa Inggris atau teks terformat: Gunakan
type=0(token) default, yang memisahkan berdasarkan spasi dan tanda baca.Pencarian bahasa Mandarin yang presisi: Gunakan mode default
type=2(jieba) atautype=3(ik).Pencarian konten JSON: Gunakan
type=4(json) dengan parameterexpruntuk menentukan path JSON yang akan diindeks.Anda dapat melihat pratinjau bagaimana tokenizer berbeda memproses teks menggunakan fungsi dbms_imci.fts_tokenize.
Q2: Mengapa kueri saya tidak menggunakan indeks teks penuh?
Pastikan
SET imci_enable_fts_query = ON;telah dieksekusi. Ini adalah penyebab paling umum.Periksa output
EXPLAINdan verifikasi apakah operatorFtsTableScanmuncul. Jika tidak, pola kueri mungkin tidak cocok dengan indeks, atau sistem menentukan bahwa pemindaian tabel penuh memiliki biaya lebih rendah.
Q3: Apa perbedaan antara kueri LIKE dan MATCH...AGAINST?
LIKE '%keyword%'tanpa indeks teks penuh menyebabkan pemindaian tabel penuh, sehingga menghasilkan performa buruk. Bahkan ketika dipercepat oleh IMCI, fungsinya relatif terbatas.MATCH...AGAINSTadalah sintaks yang dirancang khusus untuk pencarian teks penuh. Sintaks ini memberikan performa tinggi dan akan mendukung fitur lanjutan seperti kueri Boolean dan skor relevansi di masa depan. Kami menyarankan menggunakanMATCH...AGAINSTuntuk aplikasi baru.