上下文:,我有作者。每个作者发表了一份或几份出版物(可能超过500份)。每个出版物都包含标记(平均为50,最大值为445)。
我的第一个问题:,我想知道创建这个查询以返回作者的查询有多容易,这个查询按标签选择的出版物数量排序(在1到10个标签之间)。
例如,如果标准是两个标记,我希望作者已经发布了具有两个标记的出版物。
标签出版物、作者和标签将是标签。我会在出版物和作者之间建立关系。在出版物和标签之间。
我很高兴听到任何帮助我的建议。谢谢!
发布于 2018-04-13 11:43:38
为了回答您的第一个问题,我使用全部()函数编写了一个Cypher查询,以确保发布包含声明列表中指定的所有标记。此外,所有的文章收集和排序下降。看一看:
with ['tag1', 'tag2'] as tags
match (author:Author)-[:WROTE]->(article:Article)
where all (tag in tags where tag in article.tags)
with author, collect(article) as articles order by size(articles) desc
return author你的第二个问题很难回答。你对“强大机器”的定义是什么?此外,它还取决于数据集大小以外的其他因素。我认为,在这个数据集上运行的查询和并发访问的数量都是很好的例子。
发布于 2018-04-13 15:29:41
我基于@floatingpurr和@Bruno答案创建了以下查询:
MATCH (author:Author)-[:PUBLISHED]->(publication:Publication)
MATCH (publication)-[:TAGGED]->(tag:Tag)
WHERE tag.name IN ['Tag 2', 'Tag 3']
RETURN author, count(*) AS numberOfPublications
ORDER BY numberOfPublications DESC我不满意计数,因为它不算独特的出版物。如果发布包含标记2和标签3(条件中的标记),那么它将被计算为2,我希望它计数为1。
在这种情况下,我不知道如何使用不同的特性。而且,我也不知道这是不是优化的版本。谢谢。
https://stackoverflow.com/questions/49815891
复制相似问题