获取可变长度关系中的节点数

时间:2017-06-07 01:33:36

标签: neo4j cypher

假设我正在使用<a></a>:CATEGORY s搜索图书数据库。

我正在尝试找到某个作者写的当前版本的类似书籍。 :BOOK与其他图书有:BOOK个关系(关系的方向不相关),我想查找最多3个类似的链。这是我的疑问:

:similar

问题在于:

我需要了解使用了多少相似关系。

就此而言,我的意思是MATCH (currentBook:BOOK {ISBN: {ISBN}})-[:similar*1..3]-(newBook:BOOK {author: {currentAuthor}}) RETURN newBook 对于一本特定的书实际意味着多少。所以像这样:

*1..3

Here's a (fake) sample of my dataset.

1 个答案:

答案 0 :(得分:1)

SIZE(sim)可能就是你要找的东西。

例如,此查询将返回每个路径的长度:

MATCH (currentBook:BOOK {ISBN: "978-0446310789"})-[sim:similar*1..3]-(newBook:BOOK {author: "fake"})
RETURN currentBook, newBook, SIZE(sim) AS lth;

但是,您不应该将newBook.simsUsed设置为该值,因为任何书籍的路径长度取决于您从哪本书开始,并且路径长度(从任何特定书籍开始)可能会随时间而变化。通常,您应该避免存储冗余数据。