Để có được một danh sách đơn giản các mặt hàng liên quan dựa trên thẻ, các giải pháp cơ bản đi như thế này:
3 bảng, một với các mục, một với thẻ và một với kết nối. Bảng kết nối bao gồm hai cột, một cột cho mỗi id từ các bảng còn lại. Một mục trong bảng kết nối liên kết thẻ với một mục bằng cách đặt các id tương ứng của chúng trong một hàng.
Bây giờ, để có danh sách các mục có liên quan.
tìm nạp tất cả các mục chia sẻ ít nhất một thẻ với mục gốc. hãy chắc chắn tìm nạp các thẻ cùng với các mục và sau đó sử dụng cơ chế xếp hạng đơn giản để xác định, mục nào chia sẻ nhiều thẻ nhất với thẻ gốc. mỗi thẻ tăng mối quan hệ liên quan của một.
Tùy thuộc vào thói quen gắn thẻ của bạn, bạn nên thêm một số cơ chế phản đối để ngăn các thẻ bao quát lớn trộn lẫn tính thích hợp. để đạt được điều này, bạn có thể cung cấp trọng lượng lớn hơn cho các thẻ bên dưới ngưỡng thiết bị nhất định. Ngưỡng mà thường hoạt động tốt với tôi, là total_number_of_tag_appliances/total_number_of_tags, kết quả là số lượng thiết bị trung bình. Nếu số lượng thiết bị thẻ nhỏ hơn mức trung bình, mức độ liên quan của mối quan hệ được tăng gấp đôi.
Đây cũng là câu hỏi liên quan http://stackoverflow.com/questions/18019976/mysql-php-find-similar-related-items-by-tag-taxonomy –