tag cloud

Requete SQL pour trouver des articles en relations

Trouver des articles similaires grâce à vos tags

sql pour les nuls

Date de publication : 2008-12-07

Cette requête permet de trouver pour un article donné des articles similaires en se basant sur les tags. Elle retourne les articles qui ont 50% des tags qui correspondent dans les deux sens.

Dans l'exemple suivant on traite l'article avec pour ID 100 :


SELECT
ART_ID,
COUNT(*) AS MATCHES,
(
SELECT COUNT( * )
FROM ARTICLES_TAGS
WHERE t1.ART_ID = ART_ID
GROUP BY ART_ID
) AS TAG_COUNT
FROM ARTICLES_TAGS t1
WHERE TAG_ID
IN
(
SELECT TAG_ID
FROM ARTICLES_TAGS
WHERE ART_ID =100
)
AND ART_ID !=100
GROUP BY ART_ID
HAVING
(MATCHES /(SELECT greatest(COUNT(*),1) FROM ARTICLES_TAGS WHERE ART_ID =100 GROUP BY ART_ID ) >= 0.5)
AND MATCHES >=TAG_COUNT/(1/0.5)

Image : 37hz

 
 

b1n@sp1n