Indexing 大比例尺图上的Neo4j-Cypher加权过滤关系

Indexing 大比例尺图上的Neo4j-Cypher加权过滤关系,indexing,neo4j,cypher,relationship,graph-databases,Indexing,Neo4j,Cypher,Relationship,Graph Databases,我有一个关于如何根据关系的属性有效过滤搜索结果的问题 我有一个这样的图表: MATCH (n:PERSON)-[r:WORKED_WITH]->(m:PERSON) RETURN n.name, m.name, r.weight ORDER BY r.weight DESC LIMIT 10; (:个人)-[:与{体重:30}]->(:个人) 超过300.000个节点标记为PERSON,超过15.000.000条边标记为:WORKED_with(每个节点都有一个整数权重) 现在,例如

我有一个关于如何根据关系的属性有效过滤搜索结果的问题


我有一个这样的图表:

MATCH (n:PERSON)-[r:WORKED_WITH]->(m:PERSON)
RETURN n.name, m.name, r.weight
ORDER BY r.weight DESC
LIMIT 10;
(:个人)-[:与{体重:30}]->(:个人)

超过300.000个节点标记为PERSON,超过15.000.000条边标记为:WORKED_with(每个节点都有一个整数权重)


现在,例如,我想要10个节点组合,它们之间的权重最高。因此,我的查询如下所示:

MATCH (n:PERSON)-[r:WORKED_WITH]->(m:PERSON)
RETURN n.name, m.name, r.weight
ORDER BY r.weight DESC
LIMIT 10;
正如我最近读到的,不可能在关系的属性上创建索引。我知道你可以为分区创建节点,比如100个,但这并不是最好的做法。。。是否有可能使用类似于(不平等)指数的东西?或者你认为怎样才能有效地解决这类问题

问候
沃尔夫冈

斯特凡·阿姆布鲁斯特(Stefan Armburster)详细解释了这一点(以及您的选择)

如果关系是图形的唯一入口点(请阅读:如果没有其他方法减少初始搜索)。。。然后,您可能需要将其重新建模(作为节点)。这可能确实“感觉”不正确,但这是最佳实践

希望这有帮助,
汤姆

非常感谢你的回答,我已经读了那篇文章,但我认为它并没有完全解决我的问题……问题是你进入图表的入口点。如果我能很好地理解你的解释(如果不能,请纠正我),唯一的决定因素就是关系的性质。如果是这样的话,你的选择是有限的(如果你想让事情变得更快的话)。。。我想到了一些类似于强制Neo4j根据这个属性进行内部排序的事情。。。所以我可以很容易地说相对重量>50或在30到50之间。。。。稍后我将使用jaccard系数,这将更难分割…你是对的。。。在这种情况下,这是我进入GraphUnderStand的唯一入口点(我知道我不想重塑)。目前,手动索引将是您最好的选择。