Neo4j-迭代给定节点列表的公共节点

Neo4j-迭代给定节点列表的公共节点,neo4j,cypher,Neo4j,Cypher,我不知道在neo4j中迭代列表。请有人就下面的问题提出建议 例如: 图中有一些节点。 然后,我将给出几个(总是变化的,这是用户输入)关键字来搜索这些单词共有的节点。在我的图表中,每个单词都是一个节点 Ex: Input: [Best sports car] output: connected nodes for Best are [samsung,porshe,ambassdor,protein,puma] connected nodes for sports are [cric

我不知道在neo4j中迭代列表。请有人就下面的问题提出建议

例如: 图中有一些节点。 然后,我将给出几个(总是变化的,这是用户输入)关键字来搜索这些单词共有的节点。在我的图表中,每个单词都是一个节点

Ex: Input: [Best sports car]
output: connected nodes for Best are [samsung,porshe,ambassdor,protein,puma]
        connected nodes for sports are [cricket,racing,rugby,puma,porshe]
        connected nodes for car are [porshe,ambassdor,benz,audi]
Common nodes to all words are : [porshe]
Result is : porshe

我不知道如何迭代每个单词并存储匹配结果。请有人提出任何意见

像这样的东西是你想要的吗

从请求搜索的单词集合开始

将每个单词与图表匹配

在列表中收集连接的单词

with ['Best', 'sports', 'car'] as word_coll
unwind word_coll as word
match (:Word {name: word})--(conn_word:Word)
return word,collect(conn_word)

这是你想要的吗

从请求搜索的单词集合开始

将每个单词与图表匹配

在列表中收集连接的单词

with ['Best', 'sports', 'car'] as word_coll
unwind word_coll as word
match (:Word {name: word})--(conn_word:Word)
return word,collect(conn_word)

为了测试以下工作查询,我将做一些假设:

  • words节点具有标签
    :Word
    名称
    属性
  • 保时捷、彪马等。。节点具有标签
    :Item
    名称属性
  • Item
    节点与
    Word
    节点具有传出的
    CONNECT
    关系
这将给出以下图表:

查询如下(为了模拟给定的单词作为参数,我在查询的开头添加了一个包含单词列表的

将返回以下内容:

您可以看到
porsche
正在匹配3个单词,这是给定
单词列表的
大小
,然后您可以简单地将计数
聚合中的
3
与此
大小
进行比较

为了全面了解聚合的工作原理,您可以参考手册:

您可以在此处测试查询:

如果将单词作为参数传递,则这将是相应的查询:

MATCH (n:Word)<-[:CONNECT]-(i:Item) 
WHERE n.name IN {words}
WITH i, count(*) as c
WHERE c = size({words})
RETURN i

MATCH(n:Word)为了测试以下工作查询,我将做一些假设:

  • words节点具有标签
    :Word
    名称
    属性
  • 保时捷、彪马等。。节点具有标签
    :Item
    名称属性
  • Item
    节点与
    Word
    节点具有传出的
    CONNECT
    关系
这将给出以下图表:

查询如下(为了模拟给定的单词作为参数,我在查询的开头添加了一个包含单词列表的

将返回以下内容:

您可以看到
porsche
正在匹配3个单词,这是给定
单词列表的
大小
,然后您可以简单地将计数
聚合中的
3
与此
大小
进行比较

为了全面了解聚合的工作原理,您可以参考手册:

您可以在此处测试查询:

如果将单词作为参数传递,则这将是相应的查询:

MATCH (n:Word)<-[:CONNECT]-(i:Item) 
WHERE n.name IN {words}
WITH i, count(*) as c
WHERE c = size({words})
RETURN i

MATCH(n:Word)这有点难理解。你能详细解释一下这个问题吗?这有点难理解。你能详细说明一下这个问题吗。