2016-09-22 1 views
0

Entwickelt ein Social-Diagramm, mit dem Benutzer Rezepte posten können. Wenn sich ein Benutzer anmeldet, sieht er in seinem Land Rezepte von Leuten aus seiner Umgebung und auch Toprezepte. Ich möchte den Wert relevance jedes Benutzers für den Benutzer speichern, der das Rezept veröffentlicht hat.Entwerfen einer Social-Graph-Anwendung mit Relevanzpunktzahl

Zum Beispiel unter Berücksichtigung von 4 Personen in einem Ort. A B C D. A mag 3 von Bs Rezepten und 2 von Cs Rezepten. Also, A's relevance zu B ist 3 und zu C ist 2. Es aktualisiert sich jedes Mal, wenn A jemandes Rezept mag.

Was wäre der optimale Weg, um diese Relevanz zu speichern? Ich benutze Neo4j für die Speicherung und es funktioniert basierend auf FaceBook Login und damit FaceBook friends wird eine erste relevance Ergebnis haben.

Antwort

2

Hier ist ein einfaches Beispiel Datenmodell

Knoten

(:User {id: 123}) 
    (:Recipe {id: 234, name: 'my recipe', text: ' ... '}) 

Beziehungen

(:User)-[:POSTED]->(:Recipe) 
    (:User)-[:LIKES]->(:Recipe) 
    (:User)-[:RELEVANCE {score: 2}]->(:User) 

Und einige Cypher mit ihm zu gehen.

  • Benutzer 123 Beiträge ein Rezept

    MATCH (a:User {id: 123}) 
    CREATE (a)-[:POSTED]->(r:Recipe {id: 234, name: 'my recipe', text: ' ... '}) 
    
  • Benutzer 345 auch Dieser Code Rezept 234. mag erstellt/die Relevanz Punktzahl in Bezug auf das Plakat des Rezepts erhöht.

    MATCH (b:User {id: 345}), (r:Recipe {id: 234})<-[:POSTED]-(poster:User) 
    CREATE (b)-[:LIKES]->(r) 
    MERGE (b)-[relevance:RELEVANCE]->(poster) 
    ON CREATE SET relevance.score = 1 
    ON MATCH SET relevance.score = relevance.score + 1; 
    
Verwandte Themen