Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Membuat posting terkait atau serupa menggunakan PHP &MySQL

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. utf8_bin vs. utf_unicode_ci

  2. membuat tugas jadwal tanpa pekerjaan Cron

  3. MySQL:DATE_ADD

  4. bagaimana cara menghapus garis miring terbalik (\) pada respons json menggunakan php?

  5. MyISAM versus InnoDB