Fungsi MATCH() ... AGAINST di
MYSQL.
Fitur “search”
pada website adalah hal yg sudah lazim digunakan, karena untuk mempermudah user mencari item yg diperlukan. Untuk
membuat fitur “search” tersebut biasanya menggunakan command “LIKE” agar menghasilkan
pencarian yg diinginkan.
Misalnya saja
user ingin mencari alamat Jl.Sudirman. Maka user tinggal mengetikkan sudirman
pada form “search” tadi.
Querynya :
Select nama,alamat,telepon,fax,kota,kodepos
from member where alamat like ‘%sudirman%’.
Tapi biasanya form “search” tadi bisa digunakan untuk
mencari selain alamat misalnya nama,kota. Jadi querynya :
Select nama,alamat,telepon,fax,kota,kodepos
from member where nama like ‘%sudirman%’
or alamat like ‘%sudirman%’ or kota like ‘%sudirman%’.
Maka akan
menampilkan member yg bernama Sudirman atau member yg beralamat di Sudirman
atau member yg berada di kota Sudirman.
Untuk menyederhanakan
fungsi di atas agar tidak menggunakan fungsi “LIKE” secara berulang. MySQL
sudah mendukung untuk pengindeksan
teks lengkap dalam pencarian data.
Syaratnya adalah:
·
Indeks teks lengkap di MySQL adalah indeks
tipe FULLTEXT.
·
Indeks teks
lengkap hanya dapat digunakan dengan
tabel MyISAM. (Dalam MySQL 5.6 dan ke atas, mereka juga
dapat digunakan dengan tabel
InnoDB.) Indeks penuh-teks dapat dibuat hanya
untuk CHAR, VARCHAR, atau kolom TEXT.
·
Definisi indeks
fulltext dapat diberikan dalam
pernyataan CREATE TABLE ketika sebuah tabel dibuat, atau ditambahkan kemudian menggunakan ALTER TABLE
atau CREATE INDEX.
·
Untuk set
data yang besar, jauh lebih cepat
untuk memuat data Anda ke dalam tabel yang tidak memiliki indeks fulltext dan kemudian
membuat indeks setelah itu, selain memuat data ke
tabel yang memiliki indeks
fulltext ada.
Pertama ubah field-field nama,alamat dan kota ke tipe FULLTEXT.
ALTER TABLE member ADD FULLTEXT search_index (nama,alamat,kota).
Kedua ubah querynya menggunakan MATCH() dan AGAINST().
Select
nama,alamat,telepon,fax,kota,kodepos from member where MATCH(nama,alamat,kota) AGAINST(‘sudirman’);
Dengan demikian MATCH – AGAINST ini salah satu cara untuk optimasi
pencarian pada database MySQL. #match,#against.
Pasti bermanfaat. #mysql
Tidak ada komentar:
Posting Komentar