タグのセットで記述されたアイテムの「類似アイテム」システムをどのように実装しますか?
私のデータベースには、Article、ArticleTag、および Tag という 3 つのテーブルがあります。各記事は、多対多の関係を介して多数のタグに関連付けられています。記事ごとに、「この記事が好きなら、これらも好きになる」システムを実装するために、最も類似した 5 つの記事を見つけたいと考えています。
私はコサインの類似性に精通し ており、そのアルゴリズムを使用すると非常にうまく機能します。しかし、それは遅くする方法です。記事ごとに、すべての記事を反復処理し、記事のペアのコサイン類似度を計算してから、類似度が最も高い 5 つの記事を選択する必要があります。
200,000 件の記事と 30,000 件のタグを使用すると、1 つの記事の類似記事を計算するのに 30 分かかります。したがって、コサイン類似度とほぼ同じくらい良い結果を生成するが、リアルタイムで実行でき、毎回ドキュメント コーパス全体を反復処理する必要がない別のアルゴリズムが必要です。
多分誰かがこれに対する既製の解決策を提案できますか? 私が調べた検索エンジンのほとんどは、ドキュメントの類似性検索を有効にしていません。