Neo4j:测试和x27;节点相似性';流模式错误

Neo4j:测试和x27;节点相似性';流模式错误,neo4j,graph-algorithm,similarity,Neo4j,Graph Algorithm,Similarity,我试图在具有以下表单的二分数据库上测试“节点相似性”: 关键字-[出现在]->文章中 我想在有分数的文章之间建立一种“相似”的关系。我使用节点属性title,尝试了以下代码: CALL gds.nodeSimilarity.stream('test') YIELD node1, node2, similarity RETURN gds.util.asNode(node1).title AS Article1, gds.util.asNode(node2).title AS Article2, s

我试图在具有以下表单的二分数据库上测试“节点相似性”: 关键字-[出现在]->文章中 我想在有分数的文章之间建立一种“相似”的关系。我使用节点属性
title
,尝试了以下代码:

CALL gds.nodeSimilarity.stream('test')
YIELD node1, node2, similarity
RETURN gds.util.asNode(node1).title AS Article1, gds.util.asNode(node2).title AS Article2, similarity
ORDER BY similarity DESCENDING, Article1, Article2
结果如下:

但结果并不好,我到处都是“一个也没有”。。。是因为“title”中字符串的长度吗?我的数据库中的标题有时很长,例如:

我该怎么办


我也尝试通过“id”属性来实现这一点,但当我检查时,得分为“1”(可能最高)的文章之间似乎没有真正的相似性(它们根本不相似)。

因此您当前投影图表的方式:

CALL gds.graph.create('lpa_test','*', 
    {APPEARS_IN:{type: 'APPEARS_IN', orientation: 'NATURAL',                  
     properties:['weights']}})
由于您的图形模式,您将比较关键字而不是文章

(keyword)-[:APPEARS_IN]->(article)
关系的源节点是要比较的项目,项目比较将考虑关系的目标。这就是为什么article1和article2列都是空的,因为您可能会对关键字使用另一个属性名。如果你想比较文章,你必须颠倒关系

CALL gds.graph.create('lpa_reverse','*', 
    {APPEARS_IN:{type: 'APPEARS_IN', orientation: 'REVERSE',                  
     properties:['weights']}})
现在,您将通过节点相似性算法获得所需的结果:

CALL gds.nodeSimilarity.stream('lpa_reverse')
YIELD node1, node2, similarity
RETURN gds.util.asNode(node1).title AS Article1, 
       gds.util.asNode(node2).title AS Article2, similarity
ORDER BY similarity DESCENDING, Article1, Article2

你可能在比较关键词而不是文章。你能分享一下你是如何加载投影图的吗?我用下面的代码投影图:
CALL gds.graph.create('lpa_test','*',{expensed_IN:{type:'expensed_IN',orientation:'NATURAL',properties:['weights']})