Neo4j-计算相似度并在节点之间插入新关系(如果不存在)

Neo4j-计算相似度并在节点之间插入新关系(如果不存在),neo4j,cypher,Neo4j,Cypher,编辑: 我需要检查这段关系是否存在。如果不存在,则计算节点之间的相似性,这需要花费位时间。然后,我需要插入它们之间的关系。 我需要对图中的所有节点对重复此操作 此场景的编程范例如下所示: If relationship exits then calculate similarity and insert relationship else do nothing (or) return value 这个查询还有一个问题,它也可能导致内存异常。如果是,如何克服这个问题 这是

编辑: 我需要检查这段关系是否存在。如果不存在,则计算节点之间的相似性,这需要花费位时间。然后,我需要插入它们之间的关系。 我需要对图中的所有节点对重复此操作

此场景的编程范例如下所示:

 If relationship exits
     then calculate similarity and insert relationship
 else
     do nothing (or) return value
这个查询还有一个问题,它也可能导致内存异常。如果是,如何克服这个问题

这是我的疑问

MATCH (a{word:"review"}),(b{word:"nothing"}) 
MERGE  (a)-[r:jsim]->(b)
MERGE  (a)<-[s:jsim]-(b)
SET r.val = 
  CASE WHEN NOT (HAS (r.val)) 
    THEN [1]
  ELSE 2 END 
SET s.val = 
  CASE WHEN NOT (HAS (s.val)) 
    THEN [2]
  ELSE 1 END 
RETURN r,s
现在,jsim是我需要分配的值

假设a和b是两个节点,我必须找到它们之间的相似性,并添加与值的关系。A和B的相似性是它们之间的公共节点除以它们所连接的节点总数

Ex: A-->p,A-->q.A-->r,A-->s
    B-->r,B-->s,B-->t,B-->u,B-->v

   Sim(A,B) = Common nodes/Total Nodes
            = 2/7

这是我尝试过的,但没有足够的知识来克服内存异常。请编辑您的问题并将查询添加到其中,在一条很小的注释中,这不是真正可读的,thanksIt在不知道您的“大查询”是什么样子的情况下,很难说出导致异常的原因。我将在CASEOK中使用内部查询再次编辑我的问题。对于
EXPLAIN
,我的意思是分析查询以找到可能导致异常的特定部分
Ex: A-->p,A-->q.A-->r,A-->s
    B-->r,B-->s,B-->t,B-->u,B-->v

   Sim(A,B) = Common nodes/Total Nodes
            = 2/7