NEO4jを使用してグラフを作成していますが、現在はテキストベースの検索より優れたシンプルな推奨システムを構築しようとしています。グラフDBがNeo4jのサイファーで次善策推奨ノードを取得
役割があるPeople - [:role] -> Album
:アーティスト、プロデューサー、ソングライターは、(タイプは
Album-[:is_a_type_of]->Type
ある
関係をチャート:
ノードは、このようなとして作成されています基本的にはポップ、ロック、ディスコなど)
People -[:POPULAR_ON]->Chart
(これらはチャートであったかもしれません)
People -[:SIMILAR_TO]->People
(所定の類似の接続)
Iは、以下のCYPHER書かれている:それはしかし、動作
MATCH (a:Album { id: { id } })-[:is_a_type_of]->(t)<-[:is_a_type_of]-(recommend)
WITH recommend, t, a
MATCH (recommend)<-[:ARTIST_OF]-(p)
OPTIONAL MATCH (p)-[:POPULAR_ON]->()
RETURN recommend, count(DISTINCT t) AS type
ORDER BY type DESC
LIMIT 25;
をそれに接続された音楽の一種類のみを有する場合、それは容易に、繰り返さ従って有します同じ隣人。
言うことを示唆方法があります:
- は私から始まるアルバムに最も類似した接続関係を持って次のベストアルバムを探すには。
- タイブレーカーのシナリオに関する推奨事項はありますか?今はタイプ別です(アルバムに複数のタイプの音楽がある場合はそれ以上の価値がありますが、誰も同じ数字を持っていれば、それ以上はありません)
- -I [:SIMILAR_TO]リンクを作った[:Popular_On](?たぶん、この関係をドロップ)
私はあなたのロジックを理解していますが、グラフの種類を参考にして構成と計算で+を意味するものも理解できません。 – azngunit81
@ azngunit81:必要に応じて擬似サイファーを使って説明してください。 –
2つの質問:1)あなたは何を意味するのですか?この体重ですか? 2)人々はあなたを意味しません。人々はアーティスト、プロデューサー、作曲家などを意味します(私の質問で説明した通り) – azngunit81