繁体   English   中英

匹配连接到同一中介的节点-cypher / neo4j

[英]Match nodes connected to same intermediary - cypher/neo4j

我正在处理带有用术语节点标记的内容节点的图。 我正在尝试查询返回与其他(搜索)术语节点连接到相同内容节点的(匹配)术语节点的查询。

(matched:term)--(contentNode:content)--(search:term)

我遇到的问题是返回匹配的术语节点,这些节点连接到已连接所有搜索词而不是任何搜索词的内容。

这是我当前查询的简化版本:

query = [
            'MATCH (matched:term)<-[:TAGGED_WITH]-(contentNode:content)-[:TAGGED_WITH]->(searchTerms:term) ',
            'WHERE searchTerms.UUID IN {searchTerms} ',
            'RETURN DISTINCT matched.name AS name, matched.UUID AS UUID, matched.contentConnections AS connections ',
            'ORDER BY connections DESC LIMIT 10'
        ].join('\n');

这是一个实际的示例-术语的顶部是与我的查询匹配的术语,底部是用于搜索的术语:

搜索图片

术语“天文学”不应返回,这是因为某些标有“图像”的内容也标有“天文学”。

结果的图形表示:

图代表1

请注意,只有一个内容(灰色节点)与两个术语都匹配(这很难说,因为节点ID是显示的内容)。 期望的是仅返回与同时被“图像”和“器官”标记的内容相关的术语

另一个例子:

第二次搜寻图片

此搜索不应产生任何术语,因为没有内容被同时标记为“器官”和“天文学”,但是,它返回的术语都被标记为其中一个。

图形表示:

图代表2

我希望我已经阐明了我的问题。 我试过使用count()将结果分组,但是努力使其工作。

任何帮助,将不胜感激。

编辑:

查询:

query = [
    'MATCH (contentNode:content)-[:TAGGED_WITH]->(searchTerms:term) ',
    'WITH contentNode, COUNT(contentNode) as countContent, searchTerms ',
    'WHERE searchTerms.UUID IN {searchTerms} AND countContent = {searchTermsCount} ',
    'MATCH (typeNode:termType)<-[:IS_TYPE]-(matched:term)<-[:TAGGED_WITH]-contentNode, ',
        'matched-[:HAS_LANGUAGE {languageCode: {language} }]-(termMeta:termMeta) ',
    'WHERE NOT matched.UUID IN {ignoreTerms}',
    'RETURN DISTINCT termMeta.name AS name, matched.UUID AS UUID, matched.contentConnections AS connections ',
    'ORDER BY connections DESC LIMIT 10'
].join('\n');

选择以下两个术语后,查询将返回标有那些内容(“进化”,“蚂蚁”等)中任何一个的术语,但是,使用上述查询不会返回任何术语。

更新问题

您可以尝试将查询分为两部分:

MATCH (contentNode:content)-[:TAGGED_WITH]->(searchTerms:term)
WHERE searchTerms.UUID IN {searchTerms}
WITH contentNode, COUNT(*) as cnt
WHERE cnt = {_searchTerms_size_} 
MATCH (matched:term)<-[:TAGGED_WITH]-contentNode    
RETURN DISTINCT matched.name AS name, matched.UUID AS UUID, matched.contentConnections AS connections
ORDER BY connections DESC LIMIT 10

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM