Rumah >pangkalan data >tutorial mysql >Mari kita bincangkan tentang cara melaksanakan algoritma pengesyoran dengan cepat menggunakan MySQL
Artikel ini membawakan anda pengetahuan yang berkaitan tentang MySQL terutamanya memperkenalkan apa itu algoritma pengesyoran, masalah apa yang boleh kami selesaikan oleh algoritma ini, dan cara menggunakan MySQL untuk melaksanakan algoritma pengesyoran mudah. Berminat Mari kita lihat bersama , kawan-kawan semoga bermanfaat untuk semua.
Gunakan MySQL untuk melaksanakan algoritma pengesyoran ringkas
Algoritma pengesyoran ialah teknologi yang sering ditemui. Pada asasnya masalah yang diselesaikan ialah: jika anda suka buku A, maka anda mungkin akan menyukai buku B.
Dalam artikel ini, kami menggunakan MySQL dan membuka serta melaksanakan algoritma pengesyoran mudah berdasarkan statistik data.
Pertama, buat jadual data buku yang disukai pengguna, yang bermaksud user_id menyukai book_id.
CREATE TABLE user_likes ( user_id INT NOT NULL, book_id VARCHAR(10) NOT NULL, PRIMARY KEY (user_id,book_id), UNIQUE KEY book_id (book_id, user_id) ); CREATE TABLE user_likes_similar ( user_id INT NOT NULL, liked_user_id INT NOT NULL, rank INT NOT NULL, KEY book_id (user_id, liked_user_id) );
Masukkan 4 keping data ujian
INSERT INTO user_likes VALUES (1, 'A'), (1, 'B'), (1, 'C'); INSERT INTO user_likes VALUES (2, 'A'), (2, 'B'), (2, 'C'), (2,'D'); INSERT INTO user_likes VALUES (3, 'X'), (3, 'Y'), (3, 'C'), (3,'Z'); INSERT INTO user_likes VALUES (4, 'W'), (4, 'Q'), (4, 'C'), (4,'Z');
bermaksud: pengguna 1 suka A, B, C, pengguna 2 suka A, B, C, D, pengguna 3 Suka X , Y, C dan Z. Pengguna 4 menyukai W, Q, C dan Z.
Mengambil pengguna 1 sebagai contoh untuk mengira buku yang disyorkan, kita perlu mengira persamaan antara pengguna 1 dan pengguna lain, dan kemudian mengisihnya mengikut persamaan.
Kosongkan jadual data kesamaan
DELETE FROM user_likes_similar WHERE user_id = 1;
Kira jadual data kesamaan pengguna
INSERT INTO user_likes_similar SELECT 1 AS user_id, similar.user_id AS liked_user_id, COUNT(*) AS rank FROM user_likes target JOIN user_likes similar ON target.book_id= similar.book_id AND target.user_id != similar.user_id WHERE target.user_id = 1 GROUP BY similar.user_id ;
Anda boleh melihat bahawa hasil persamaan yang ditemui ialah
user_id, liked_user_id, rank 1, 2, 2 1, 3, 1 1, 4, 1
Kemudian susun mengikut persamaan, dan ambil 10 teratas, iaitu buku yang disyorkan.
SELECT similar.book_id, SUM(user_likes_similar.rank) AS total_rank FROM user_likes_similar JOIN user_likes similar ON user_likes_similar.liked_user_id = similar.user_id LEFT JOIN user_likes target ON target.user_id = 1 AND target.book_id = similar.book_id WHERE user_likes_similar.user_id = 1 AND target.book_id IS NULL GROUP BY similar.book_id ORDER BY total_rank desc LIMIT 10;
[Pembelajaran yang disyorkan: tutorial video mysql]
Atas ialah kandungan terperinci Mari kita bincangkan tentang cara melaksanakan algoritma pengesyoran dengan cepat menggunakan MySQL. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!