io ho un campo nei record relativi agli articoli chiamato tag
scompatti questo campo con implode in modo che in ogni posizione dell'array possieda un tag dell'articolo

poi fai una query dove interroghi la tua tabella in modo che il tag deve essere uguale ai tag negli array
se il risultato positivo mostra....
io ho messo pure 5 articoli casuali...quindi order by rand

ho fatto una cosa del genere
Codice PHP:
if(trim($tag) != ""){
$tagdefinitiviimplode("%' OR tag LIKE '%"$tag_def);
$tagdefinitivi"'%".$tagdefinitivi."%'";


$vedianchemysql_query("SELECT * FROM articoli WHERE tag LIKE $tagdefinitivi ORDER BY rand() LIMIT 8");