Neo4j:测试 'Node Similarity' 流模式错误

Neo4j: Testing 'Node Similarity' on Stream mode error

我正在尝试在具有这种形式的二分数据库上测试 'Node similarity': 关键字-[APPEARS_IN]->文章 我想在有分数的文章之间建立关系 'SIMILAR'。我尝试了以下代码,使用节点 属性 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

结果如下:

但是结果不好,我到处都是'None'...是因为'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