関連タグってどうやるんだろう

というのは、はてブだとタグをクリックしたときにrelatedとしていっしょに使われているタグの一覧を出してくれるじゃないですか。あれを実装したい。で、とりあえずこんなコードを書いてみた。

my $schema = Evangeline::Schema::DBIC->connect(...);

my $rs = $schema->resultset('Tag')->find({ tag => 'タグ' })->images;

my %rel_tag;
while (my $img = $rs->next) {
    my $tag_rs = $img->tags;
    while (my $t = $tag_rs->next) {
        $rel_tag{$t->tag}++;
    }
}

my @rel_tag = sort {$a cmp $b} grep {$_ ne 'タグ'} keys %rel_tag;

say foreach @rel_tag;

こうやればとりあえずはできたんだけど、なんかいまいちな気がするんだよね。誰かえろいえらい人がヒントだけでも教えてくれたりするとものすごく喜びます。