MySQL - Parser Teks Penuh ngram: Panduan untuk Pemula

Halo semua, calon ahli basis data! Hari ini, kita akan memulai perjalanan menarik ke dunia Parser Teks Penuh ngram MySQL. Jangan khawatir jika Anda baru dalam pemrograman - saya akan menjadi panduan Anda yang ramah, menjelaskan semuanya selangkah demi selangkah. Jadi, ambil secangkir kopi, dan mari kita mulai!

MySQL - ngram Fulltext Parser

Parser Teks Penuh ngram: Mengapa Penting?

Bayangkan Anda mencoba menemukan buku tertentu di perpustakaan besar. Bukankah akan bagus jika Anda hanya bisa mengetik beberapa kata dan langsung menemukan apa yang Anda cari? Itulah tepatnya yang dilakukan Parser Teks Penuh ngram untuk basis data!

Parser ngram seperti pustakawan super pintar yang memecah teks menjadi potongan-potongan kecil (disebut ngram) dan membantu Anda mencari melalui mereka dengan cepat dan efisien. Ini sangat berguna untuk bahasa yang tidak menggunakan spasi antar kata, seperti bahasa Cina atau Jepang.

Apa itu ngram?

Ngram adalah urutan berkelanjutan dari n item dari teks yang diberikan. Misalnya, jika kita memiliki kata "hello" dan n = 2 (yang kita sebut bigram), kita akan mendapatkan:

  • he
  • el
  • ll
  • lo

Cukup menarik, bukan? Sekarang, mari kita lihat bagaimana kita bisa menggunakannya di MySQL!

Mengkonfigurasi Ukuran Token ngram

Sebelum kita mulai menggunakan parser ngram, kita perlu memberitahunya seberapa besar ngram yang kita inginkan. Ini disebut ukuran token.

Berikut cara kita mengaturnya:

SET GLOBAL ngram_token_size = 2;

Ini mengatur ukuran ngram kita menjadi 2 (bigram). Tapi ingat, Anda perlu hak istimewa khusus untuk mengubah variabel global. Jika Anda baru mulai, administrator basis data Anda mungkin perlu melakukan ini untuk Anda.

Membuat Indeks FULLTEXT Menggunakan Parser ngram

Sekarang setelah kita mengatur ukuran token kita, mari kita membuat tabel dan menambahkan indeks FULLTEXT menggunakan parser ngram:

CREATE TABLE articles (
id INT PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(200),
content TEXT,
FULLTEXT INDEX ngram_idx (content) WITH PARSER ngram
) ENGINE=InnoDB;

Dalam contoh ini, kita membuat tabel bernama 'articles' dengan kolom 'id', 'title', dan 'content'. Keajaiban terjadi di baris terakhir di mana kita membuat indeks FULLTEXT pada kolom 'content' menggunakan parser ngram.

Penanganan Ruang oleh Parser ngram

Salah satu hal keren tentang parser ngram adalah bagaimana ia menangani spasi. Ia memperlakukan mereka seperti karakter lain. Jadi, "hello world" dengan bigram akan menjadi:

  • he
  • el
  • ll
  • lo
  • o
  • w
  • wo
  • or
  • rl
  • ld

Ini membuatnya bagus untuk mencari frasa!

Penanganan Kata Berhenti oleh Parser ngram

Tidak seperti beberapa parser lain, parser ngram tidak menggunakan kata berhenti. Kata berhenti adalah kata-kata umum seperti "the" atau "and" yang sering diabaikan dalam pencarian. Parser ngram mencakup semuanya, yang bisa baik maupun buruk tergantung pada kebutuhan Anda.

Pencarian Frasa oleh Parser ngram

Mari kita mencoba pencarian frasa! Pertama, mari kita tambahkan beberapa data ke tabel kita:

INSERT INTO articles (title, content) VALUES
('MySQL Tutorial', 'MySQL adalah basis data yang populer'),
('Python Guide', 'Python adalah bahasa pemrograman');

Sekarang, mari kita cari "basis data yang populer":

SELECT * FROM articles
WHERE MATCH(content) AGAINST('basis data yang populer' IN BOOLEAN MODE);

Ini harus mengembalikan artikel MySQL Tutorial kita.

Pencarian Istilah oleh Parser ngram

Kita juga bisa mencari istilah individu. Mari kita mencoba mencari "pemrograman":

SELECT * FROM articles
WHERE MATCH(content) AGAINST('pemrograman' IN BOOLEAN MODE);

Ini harus mengembalikan artikel Python Guide kita.

Pencarian Wildcard oleh Parser ngram

Parser ngram tidak mendukung pencarian wildcard dalam arti tradisional. Namun, karena ia memecah kata-kata menjadi potongan kecil, ia masih bisa menemukan kecocokan sebagian. Misalnya:

SELECT * FROM articles
WHERE MATCH(content) AGAINST('prog' IN BOOLEAN MODE);

Ini mungkin masih menemukan artikel "pemrograman" kita, bahkan meskipun kita hanya mencari sebagian dari kata tersebut.

Parser Teks Penuh ngram Menggunakan Program Klien

Akhirnya, mari kita lihat bagaimana kita mungkin menggunakan parser ngram dalam program Python:

import mysql.connector

# Menghubungkan ke basis data
cnx = mysql.connector.connect(user='nama_pengguna_Anda', password='kata_sandi_Anda',
host='127.0.0.1', database='basis_data_Anda')
cursor = cnx.cursor()

# Melakukan pencarian
query = "SELECT * FROM articles WHERE MATCH(content) AGAINST(%s IN BOOLEAN MODE)"
search_term = 'basis data'

cursor.execute(query, (search_term,))

# Mencetak hasil
for (id, title, content) in cursor:
print(f"ID: {id}, Title: {title}, Content: {content}")

# Menutup koneksi
cursor.close()
cnx.close()

Program ini terhubung ke basis data MySQL Anda, melakukan pencarian menggunakan parser ngram, dan mencetak hasilnya.

Dan begitulah, teman-teman! Kita telah menjelajahi dunia Parser Teks Penuh ngram di MySQL. Ingat, latihan membuat sempurna, jadi jangan takut untuk bereksperimen dengan konsep-konsep ini. Sebelum Anda tahu, Anda akan melakukan parsing dan pencarian seperti seorang profesional!

Metode Deskripsi
SET GLOBAL ngram_token_size = n Mengkonfigurasi ukuran token ngram
CREATE TABLE... FULLTEXT INDEX... WITH PARSER ngram Membuat tabel dengan indeks FULLTEXT menggunakan parser ngram
INSERT INTO... VALUES... Memasukkan data ke dalam tabel
SELECT... WHERE MATCH(...) AGAINST(... IN BOOLEAN MODE) Melakukan pencarian teks penuh menggunakan parser ngram

Selamat mengkode, dan semoga kueri Anda selalu mengembalikan hasil yang Anda cari!

Credits: Image by storyset