Rumah >pangkalan data >tutorial mysql >Mari kita bincangkan tentang cara melaksanakan algoritma pengesyoran dengan cepat menggunakan MySQL

Mari kita bincangkan tentang cara melaksanakan algoritma pengesyoran dengan cepat menggunakan MySQL

藏色散人
藏色散人ke hadapan
2023-01-04 16:14:331819semak imbas

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.

Mari kita bincangkan tentang cara melaksanakan algoritma pengesyoran dengan cepat menggunakan MySQL

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!

Kenyataan:
Artikel ini dikembalikan pada:learnku.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam