我试图在自定义PHP站点中为产品制作相关算法,使用mysql。
我有一个关于产品的表,另一个关于标签的表,还有一个关于products_tags的关系表。
给定一个产品,我必须在给定产品的情况下,根据匹配标签的数量找到产品的顺序。
的例子:
Product 1 tags: tag1, tag2, tag3, tag4.
Product 2 tags: tag2.
Product 3 tags: tag1, tag2, tag4.
Product 4 tags: tag1, tag5, tag2.
结果:
相关产品1:
Product3 (3 matches)
Product4 (2 matches)
Product2 (1 match)
这个想法是用一个mysql查询
SELECT COUNT(1) AS count1, pt1。product_id FROM product_tagstag_id in (select tag_id from product_tags WHERE product_id = ?) AND product_id != ? GROUPpt1。product_id ORDER BY count1 DESC
SELECT COUNT(1) AS count1, pt1.product_id FROM product_tags pt1 WHERE tag_id in (select tag_id from product_tags WHERE product_id = ?) AND product_id != ? GROUP BY pt1.product_id ORDER BY count1 DESC
修改为排除原产品