Ho un grafico che utilizza NEO4j e attualmente sto cercando di creare un sistema di raccomandazione semplice che sia migliore della ricerca basata su testo.Il DB grafico ottiene il prossimo nodo consigliato migliore in Neo4j cypher
nodi vengono creati come ad esempio: Album, Persone, Tipo, Grafico
relazione vengono creati come ad esempio:
People - [:role] -> Album
dove i ruoli sono: Artista, Produttore, Autore di canzoni
Album-[:is_a_type_of]->Type
(tipo è in pratica Pop, Rock, Disco ...)
People -[:POPULAR_ON]->Chart
(Il grafico è quello che potrebbe essere stato Billboard)
People -[:SIMILAR_TO]->People
(collegamento somiglianza predeterminato)
ho scritto il seguente cifra:
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;
Funziona tuttavia, si ripete facilmente se si ha un solo tipo di musica ad esso collegato, ha quindi la gli stessi vicini.
Esiste un modo suggerito di dire:
- a trovare la miglior album successivo che ha i rapporti connessi più simili a quelle del album a partire da.
- Qualche raccomandazione per uno scenario di tie breaker? In questo momento è ordinato per tipo (quindi se un album ha più di un tipo di musica è valutato di più ma se tutti hanno lo stesso numero, non c'è più significativo)
- -I ho creato il collegamento [: SIMILAR_TO] di far rispettare una priorità da considerare quel rapporto così importante, ma non ho avuto una cifra a lavorare con esso
- -Stesso va per [: Popular_On] (? Forse cadere questo rapporto)
Capisco la tua logica, ma non capisco anche cosa intendi per configurazione e calcoli + somma in riferimento alla tipologia di grafico. si prega di elaborare utilizzando pseudo-cyphers in caso di necessità di – azngunit81
@ azngunit81: risposta aggiornata con query. –
Due domande: 1) cosa intendi con Config..è questo peso? 2) La gente non significa te. Le persone significano Artisti, produttori, compositori, ecc ... (come spiegato nella mia domanda) – azngunit81