簡體   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