首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >连接到同一中间层的匹配节点-cypher/新4j

连接到同一中间层的匹配节点-cypher/新4j
EN

Stack Overflow用户
提问于 2014-03-02 14:27:04
回答 1查看 230关注 0票数 1

我正在处理一个用术语节点标记内容节点的图表。我试图让一个查询正常工作,返回(匹配的)连接到与其他(搜索)术语节点相同的内容节点的术语节点。

代码语言:javascript
复制
(matched:term)--(contentNode:content)--(search:term)

我遇到的问题是返回连接到所有搜索词的内容的匹配项节点,而不是任何一个。

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

代码语言:javascript
复制
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');

下面是实践中的一个例子--最上面的一组术语是与我的查询匹配的术语,下面是用于搜索的术语:

“天文学”一词不应返回,但这是因为一些以“图像”为标记的内容也被标记为“天文学”。

结果的图表示:

注意,只有一段内容(灰色节点)匹配这两个术语(很难判断,因为显示的是节点ID )。我们期望的是只返回那些连接到带有“图像”和“器官”标记的内容的术语。

另一个例子是:

这一搜索不应产生任何术语,因为没有任何内容都有“器官”和“天文学”的标记,然而,它正在返回标记为两者之一的术语。

图形表示:

我希望我已经把我的问题说清楚了。我试着用count()对结果进行分组,但很难让它起作用。

任何帮助都将不胜感激。

编辑:

查询:

代码语言:javascript
复制
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');

如果选择了以下两个术语,则查询将返回标记到任何内容片段(“演化”、“蚂蚁”等)的术语,但是,在使用上述查询时,将不会返回任何术语。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-03 09:05:52

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

代码语言:javascript
复制
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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22128827

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档