私は何百万もの曲を持っていますが、各曲には一意の曲IDがあります。各曲IDに対応して、曲名、アーティスト名、アルバム名、年などの属性があります。類似の音楽を保存するのに最適な方法
今、2つの曲の類似度を調べる仕組みを実装しました。 これは私に0〜100の値を与えます。
したがって、実行時には実行できない類似の音楽をユーザーに表示する必要があります。私は、それぞれの曲とすべての曲との間の類似度の値を前処理する必要があります。
したがって、私は3つの属性を持つDB、I nは曲の数はn×n個のレコードを有するであろう
song1, song2, similarity
を作成した場合。
そして、私は似た音楽を取得したい時はいつでも、私はこのクエリを実行する必要があります。
SELECT song2 WHERE song1 = x AND similarity > 80 ORDER BY similarity DESC;
そのような情報を維持するために何かを提案してください。
ありがとうございました。
オーダーが80未満の曲をすべて検索する必要はありますか?なぜそれを記録しないのですか? 80未満の場合は何ですか? – Cups
私はできますが、私はこの関数getSIMILARITY(songid1、songid2)を持っているので、それは私に似ています。しかし、実行時にそれを行うと、多くのDBクエリが存在します。 私はトップ20の類似曲を探す必要があるためです。私は各曲との類似点を抽出する必要があります。 – Kevindra
私は曲間の類似度を事前に計算するのが最善だと思いますが、すべてのペアについて一度類似度を計算する必要があるため、n * nレコードにはなりません。言い換えると、song1-song2の類似度を計算した場合、song2-song1のためにそれを行う必要はありません。そして、それ自体で曲を計算する必要もありません。 – Abhay