2014-10-15 5 views
0

Я пытаюсь создать систему графиков для извлечения ленты новостей пользователя.Neo4j, Cypher: Graphity System

A Пользователь подключен к подруге с помощью связи Ego, в которой записано ID, сделанные пользователем. Но я обнаружил, что Neo4j повторно использует идентификатор узла, если этот узел удален.

Итак, есть ли другой способ создания системы графиков и отслеживать отношения Ego, не сохраняя в нем user id. Поскольку создание узла для Ego вместо relationship теряет легкость обхода ленты новостей.

Например это запрос к неследовать пользователю

MATCH (u:User), (f:User) 
WHERE ID(u)=4084079 AND ID(f)=4105710 
MATCH (x1)-[r1:Ego{user_id:ID(u)}]->(f)-[r2:Ego{user_id:ID(u)}]->(x2) 
FOREACH (s IN CASE WHEN r1 IS NULL THEN [] ELSE [r1] END | 
    FOREACH (t IN CASE WHEN r2 IS NULL THEN [] ELSE [r2] END | 
    CREATE (x1)-[:Ego{user_id:ID(u)}]->(x2) 
    DELETE s, t 
    ) 
) 
WITH u, f 
MATCH (u)-[r:Follow]->(f) 
DELETE r 

ответ

1

Возможно, вы также можете сохранить внешний идентификатор пользователя, а затем проверить идентификатор пользователя от магазина-один?

В противном случае не нужно искать через идентификатор, но идентификатор пользователя.

+0

Хм, у меня есть ваше мнение. Но проблема заключается в том, что использование идентификатора в качестве свойств приводит к неожиданному увеличению использования ОЗУ? Если это не вызвано этим, я могу уйти от него, так как пользователи никогда не будут удалены. На самом деле этот вопрос является расширением http://stackoverflow.com/questions/26344479/neo4j-server-consuming-ram-excessively/26345908?noredirect=1#comment41413719_26345908 http://stackoverflow.com/questions/ 26189351/neo4j-server-clear-the-cache-in-ram и причина по-прежнему не решена для меня .. –