同じ仲介者に接続されているノードを一致させる-cypher / neo4j

bornytm

用語ノードでタグ付けされたコンテンツノードを含むグラフに取り組んでいます。他の(検索)用語ノードと同じコンテンツノードに接続されている(一致した)用語ノードを返すクエリを機能させようとしています。

(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

1つのコンテンツ(灰色のノード)のみが両方の用語に一致することに注意してください(ノードIDが表示されるため、見分けがつきません)。期待されるのは、「画像」と「臓器」の両方でタグ付けされたコンテンツに関連する用語のみを返すことです。

もう一つの例:

2番目の検索画像

'organ'と 'astronomy'の両方でタグ付けされたコンテンツはないため、この検索で​​は用語は生成されませんが、どちらかにタグ付けされた用語が返されます。

グラフ表現:

グラフ担当者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');

次の2つの用語を選択すると、クエリはそれらのコンテンツ( 'evolution'、 'ant'など)のいずれかにタグ付けされた用語を返すことが期待されますが、上記のクエリでは用語は返されません。

更新の問題

RaduK

クエリを2つに分割してみてください。

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

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Neo4j /パスの中心にあるCypherノード

分類Dev

Neo4j Cypher:重複ノードをマージ

分類Dev

Cypherでの複数の一致-Neo4j

分類Dev

アレイをCypherと組み合わせる(Neo4j)

分類Dev

トラバーサルブランチの最初のnノードに一致するNeo4j / Cypher

分類Dev

Neo4j / Cypher:プロパティをWITHに渡す

分類Dev

Neo4j cypher:集計、order by、limitの組み合わせ

分類Dev

neo4j cypher、ノードを検索し、IDによる関係です

分類Dev

Springデータneo4jのCypherクエリとCypherDSL

分類Dev

Neo4j Cypher ケビン ベーコン数 2

分類Dev

neo4j:uuidを使用したCypher LOAD CSV

分類Dev

Neo4j cypherクエリ:COLLECT(S)でORDERBYを使用

分類Dev

IF ... ELSE with Cypher Neo4J

分類Dev

neo4j Cypher IF THEN ELSE

分類Dev

Count and operations in Neo4j cypher

分類Dev

Neo4j / Cypher-指定された親にのみリンクするノードを検索します

分類Dev

cypher neo4j - ノードのグループを集める

分類Dev

Neo4j Cypher:パス内の連続していないノードの属性を確認する

分類Dev

Neo4j Cypher で WITH を介して個別のノードを渡す

分類Dev

特定の関係を持たないノードの検索(Cypher / neo4j)

分類Dev

同じコミュニティのノードをNeo4jのCypherとマージする方法は?

分類Dev

Neo4j Cypherを使用して、相互に関連していないノードを見つける

分類Dev

関係のある接続されたノードを見つけるためのNeo4jのより効率的なCypherクエリ

分類Dev

Neo4j Cypherクエリ:ノードに接続されている、他に3つ以上の関係があるすべてのノードを検索する

分類Dev

Neo4j、Cypherコマンドによるバルクロード

分類Dev

Neo4j Cypherで個別のノードペアを返す方法は?

分類Dev

Neo4j Cypher:ネストされたcaseステートメント

分類Dev

jQueryを使用してNeo4jでCypherクエリを実行する

分類Dev

neo4j cypherは既存のノードを更新するか、新しいノードを作成します

Related 関連記事

  1. 1

    Neo4j /パスの中心にあるCypherノード

  2. 2

    Neo4j Cypher:重複ノードをマージ

  3. 3

    Cypherでの複数の一致-Neo4j

  4. 4

    アレイをCypherと組み合わせる(Neo4j)

  5. 5

    トラバーサルブランチの最初のnノードに一致するNeo4j / Cypher

  6. 6

    Neo4j / Cypher:プロパティをWITHに渡す

  7. 7

    Neo4j cypher:集計、order by、limitの組み合わせ

  8. 8

    neo4j cypher、ノードを検索し、IDによる関係です

  9. 9

    Springデータneo4jのCypherクエリとCypherDSL

  10. 10

    Neo4j Cypher ケビン ベーコン数 2

  11. 11

    neo4j:uuidを使用したCypher LOAD CSV

  12. 12

    Neo4j cypherクエリ:COLLECT(S)でORDERBYを使用

  13. 13

    IF ... ELSE with Cypher Neo4J

  14. 14

    neo4j Cypher IF THEN ELSE

  15. 15

    Count and operations in Neo4j cypher

  16. 16

    Neo4j / Cypher-指定された親にのみリンクするノードを検索します

  17. 17

    cypher neo4j - ノードのグループを集める

  18. 18

    Neo4j Cypher:パス内の連続していないノードの属性を確認する

  19. 19

    Neo4j Cypher で WITH を介して個別のノードを渡す

  20. 20

    特定の関係を持たないノードの検索(Cypher / neo4j)

  21. 21

    同じコミュニティのノードをNeo4jのCypherとマージする方法は?

  22. 22

    Neo4j Cypherを使用して、相互に関連していないノードを見つける

  23. 23

    関係のある接続されたノードを見つけるためのNeo4jのより効率的なCypherクエリ

  24. 24

    Neo4j Cypherクエリ:ノードに接続されている、他に3つ以上の関係があるすべてのノードを検索する

  25. 25

    Neo4j、Cypherコマンドによるバルクロード

  26. 26

    Neo4j Cypherで個別のノードペアを返す方法は?

  27. 27

    Neo4j Cypher:ネストされたcaseステートメント

  28. 28

    jQueryを使用してNeo4jでCypherクエリを実行する

  29. 29

    neo4j cypherは既存のノードを更新するか、新しいノードを作成します

ホットタグ

アーカイブ