Menggunakan pencarian Teks Lengkap MySQL MATCH (col1,col2,...) AGAINST (expr [search_modifier])
hal.
Katakanlah tabel Anda adalah articles
dan Anda perlu menemukan posting terkait tentang judul posting saat ini. Lakukan seperti ini:
SELECT *, MATCH(title, body) AGAINST('$CurrentPostTitle') AS score
FROM articles
WHERE MATCH(title, body) AGAINST('$CurrentPostTitle')
ORDER BY score DESC LIMIT 5
Ini akan memberi Anda 5 pos terkait teratas.
Tapi pertama-tama ingat untuk mengaktifkan pencarian Teks Lengkap untuk kolom tabel itu, dengan menjalankan kueri ini:
ALTER TABLE articles ADD FULLTEXT (title, body);
[EDIT]:Mengapa tidak menggunakan LIKE
: Klarifikasi ke OP:
Karena tidak akan memberikan hasil yang benar. Katakanlah Anda judul saat ini adalah "Musik 1980" dan Anda ingin posting terkait itu. Sekarang, jika Anda menggunakan LIKE
maka hanya postingan yang berisi PERSIS urutan kata "Music of 1980" yang akan muncul. Namun, jika Anda menggunakan MATCH ... AGAINST
, maka akan muncul postingan yang berisi Musik ATAU 1980. Juga, postingan yang berisi Musik dan 1980 akan muncul di Top karena memberikan SCORE
untuk setiap hasil dan kami mengurutkan berdasarkan skor itu. Saya harap itu jelas.
[EDIT]:2 :
Jika Anda memiliki kategori, Anda dapat menambahkan AND Category = '$CurrentCategory'
dalam kueri SQL where clause
untuk mendapatkan hasil yang lebih spesifik.
[EDIT]:3:OP tidak dapat menggunakan Teks lengkap :
Jika Anda tidak dapat menggunakan Teks Lengkap (karena alasan tertentu), Anda dapat menampilkan 5 posting acak dari kategori yang sama. Karena mereka berada dalam kategori yang sama, setidaknya mereka terkait:
SELECT *
FROM articles
WHERE Category = '$CurrentCategory'
LIMIT 5
Sintaks yang Diedit:Mengubah LIMTI menjadi LIMIT di Kode MySQL