MySQL - Penyelidikan Natural Language Fulltext Search
Hai, para penggemar basis data yang ambisius! Hari ini, kita akan memulai perjalanan menarik ke dalam dunia Penyelidikan Natural Language Fulltext Search di MySQL. Jangan khawatir jika Anda baru dalam pemrograman; saya akan mengajarkan Anda secara langkah demi langkah, seperti yang saya lakukan bagi ribuan murid selama tahun-tahun mengajar saya. mari kita masuk!
Apa Itu Penyelidikan Natural Language Fulltext?
Imaginasi Anda mencari buku di perpustakaan yang besar. Daripada memeriksa setiap buku, bagaimana kalau Anda dapat menjelaskan apa yang Anda cari dan memiliki petugas perpustakaan menemukannya untuk Anda? Itu sebenarnya apa yang Penyelidikan Natural Language Fulltext Search lakukan untuk basis data!
Penyelidikan Natural Language Fulltext adalah fitur yang kuat di MySQL yang memungkinkan Anda mencari rekaman berdasarkan relevansinya terhadap permintaan teks tertentu. Itu seperti memiliki petugas perpustakaan super cerdas untuk basis data Anda!
Bagaimana Cara Kerjanya?
- MySQL membuat indeks dari semua kata di kolom yang ditentukan.
- Ketika Anda mencari, itu mencari rekaman yang mengandung kata-kata itu.
- Kemudian itu menilai hasil berdasarkan relevansinya terhadap permintaan pencarian Anda.
mari kita lihat ini dalam tindakan dengan beberapa contoh kode!
CREATE TABLE books (
id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(255),
description TEXT,
FULLTEXT(title, description)
);
INSERT INTO books (title, description) VALUES
('The MySQL Handbook', 'A comprehensive guide to MySQL database management'),
('SQL for Beginners', 'Learn SQL from scratch with easy-to-follow examples'),
('Database Design Mastery', 'Advanced techniques for efficient database design');
SELECT * FROM books
WHERE MATCH(title, description) AGAINST('MySQL guide');
Dalam contoh ini, kita:
- Membuat tabel 'books' dengan indeks FULLTEXT di 'title' dan 'description'.
- Memasukkan beberapa data contoh.
- Melakukan Penyelidikan Natural Language Fulltext untuk "MySQL guide".
MySQL akan mengembalikan hasil yang diurutkan berdasarkan relevansi, mungkin dengan "The MySQL Handbook" di puncak!
Stop Words dalam Pencarian
Sekarang, mari bicarakan tentang konsep yang disebut "stop words". Imaginasi jika setiap kali Anda berbicara, Anda menghitung "the", "a", "an", dll. Itu akan membuat Anda lelah, kan? MySQL merasa sama!
Stop words adalah kata-kata umum yang MySQL mengabaikan saat pencarian full-text untuk menyimpan waktu dan meningkatkan relevansi. Kata-kata ini biasanya termasuk:
Stop Words |
---|
a, an, and |
are, as, at |
be, but, by |
for, if, in |
into, is, it |
no, not, of |
on, or, such |
that, the, their |
then, there, these |
they, this, to |
was, will, with |
Bagaimana Menangani Stop Words
Secara default, MySQL menggunakan daftar stop wordsnya sendiri. Namun, Anda dapat mengubah perilakunya:
- Untuk melihat daftar stop words saat ini:
SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_DEFAULT_STOPWORD;
- Untuk menonaktifkan stop words sepenuhnya:
SET GLOBAL innodb_ft_enable_stopword = OFF;
- Untuk menggunakan daftar stop words khusus:
SET GLOBAL innodb_ft_server_stopword_table = 'database_name/table_name';
Ingat, menangani stop words dapat mempengaruhi hasil pencarian Anda, jadi gunakan opsi ini bijaksana!
Penyelidikan Natural Language Full-text Search Menggunakan Program Klien
Sekarang kita mengerti dasarnya, mari lihat bagaimana kita dapat mengimplementasikan Penyelidikan Natural Language Fulltext Search dalam sebuah konteks dunia nyata menggunakan program klien. Untuk contoh ini, kita akan menggunakan Python dengan library MySQL Connector.
Pertama-tama, pastikan Anda telah menginstal MySQL Connector:
pip install mysql-connector-python
Sekarang, mari kita buat skrip Python sederhana:
import mysql.connector
# Terhubung ke basis data MySQL
db = mysql.connector.connect(
host="localhost",
user="your_username",
password="your_password",
database="your_database"
)
cursor = db.cursor()
# Fungsi untuk melakukan pencarian full-text
def fulltext_search(search_term):
query = "SELECT * FROM books WHERE MATCH(title, description) AGAINST(%s IN NATURAL LANGUAGE MODE)"
cursor.execute(query, (search_term,))
results = cursor.fetchall()
return results
# Contoh penggunaan
search_results = fulltext_search("MySQL guide")
for result in search_results:
print(f"ID: {result[0]}, Title: {result[1]}, Description: {result[2]}")
# Tutup koneksi
db.close()
mari kitauraikan ini:
- Kita mengimpor MySQL Connector dan menestal koneksi ke basis data kita.
- Kita menentukan fungsi
fulltext_search
yang menerima istilah pencarian sebagai input. - Dalam fungsi itu, kita membentuk dan menjalankan sebuah permintaan MySQL menggunakan Penyelidikan Natural Language Fulltext.
- Kita mengambil dan mengembalikan hasil.
- Akhirnya, kita menunjukkan bagaimana menggunaikan fungsi ini dan mencetak hasilnya.
Skrip ini memungkinkan Anda mudah melakukan Penyelidikan Natural Language Fulltext Searches dari dalam aplikasi Python Anda!
Kesimpulan
Dan itulah, teman-teman! Kita telah berperjalanan melalui dunia menarik Penyelidikan Natural Language Fulltext Search di MySQL. Dari memahami konsep dasarnya hingga mengimplementasikannya dalam konteks dunia nyata, Anda sekarang memiliki alat untuk membuat pencarian basis data Anda lebih efisien dan relevan.
Ingat, seperti belajar bahasa baru, menguasai permintaan basis data memerlukan latihan. Jadi jangan frustasi jika itu tidak langsung berjalan. Terus mencoba, dan segera Anda akan mencari basis data seperti seorang pro!
Seperti yang saya selalu katakan kepada murid-murid saya, basis data seperti perpustakaan yang terorganisir baik, dan Anda sedang belajar menjadi petugas perpustakaan yang paling efisien di kota. Selamat mencari!
Credits: Image by storyset