これは、一般的なタグ付けアイテムに適用される実際の問題です (はい、これは StackOverflow にも適用されます。いいえ、StackOverflow に関する問題ではありません)。
タグ付けの問題全体は、アイテムが何であれ (ジョーク、ブログ投稿、質問など)、類似のアイテムをクラスター化するのに役立ちます。ただし、(通常ではありますが厳密ではありませんが) タグの階層が存在します。つまり、一部のタグは他のタグも暗示します。おなじみの例を使用すると、「c#」so タグは「.net」も意味します。別の例として、ジョーク データベースでは、"blondes" タグは、"irish"、"belge"、"canadian" などと同様に、ジョークの出身国に応じて "derisive" タグを意味します。
プロジェクトでこれをどのように処理しましたか? 2つの別々のケースで使用した2つの異なる方法(実際には同じメカニズムですが、2つの異なる環境で実装されています)について説明する回答を提供しますが、同様のメカニズムだけでなく、階層の問題に関するあなたの意見にも興味があります.