2016-04-05 17 views
2

ユーザは関心のある主題ノードに関連しており、それらの主題は何らかの関係によっていくつかの質問に関連しているグラフがあります。以下のクエリで興味のある主題のすべての質問を簡単に取得できます。複数の関係で動作するNeo4j Cypherクエリ

match(u:user{name:'vartika'})<-[:userinteresttag]-(tag)-[:tagofquestion]->(q:question) return q.title 
        (user) 
       /  \ 
       /  \ 
      (subject1) (subject2) (subject3) 
      /\   /
      / \   / 
     (ques1) (ques2) (ques3) (ques4)(ques5) 

しかし、今問題は、特定のユーザーの興味を持ったテーマ以外の質問を取得する方法です。非興味のコースの質問を取得するためのクエリを成形する方法。 (グラフから分かるように、ユーザーと質問ノードが直接接続されていない)

私はsubject3としてuserinteressubjectではありませんques4とques5を取得するためにクエリを実行する* userinterestsubjectされていません*

答えて

0

解決策の1つは、データベースのアーキテクチャを変更することです。また、ユーザが直接質問を添付する必要があるときはいつでも、また質問にタグを付ける必要があるときは、 は、だから、別の解決策は、

match(u:user{name:'vartika'})-[rel*1..3]->(q:question) return q.title 

のようなものである

match(u:user{name:'vartika'})-[:asked]->(q:question) return q.title 

のようなものを持っていますが、それはあなたがユーザーとの間のパスのlenghを知ることに依存し、

編集質問: この

をお試しください
match(u:user{name:'vartika'}) with u Match (q:question) where not (u)<-[:userinteresttag]-()-[:tagofquestion]->(q) return q 

あなたは

+0

というタグでユーザーに接続していない質問がありますが、ユーザーが質問したかどうかは関係ありません。そのような私は彼/彼女の/彼女の関連科目以外のいくつかの追加の質問をユーザーに表示することができます。あなたは私に今 –

+0

と上記のグラフexを渡すことで、あなたに私の質問を明確に伝えることができますか?私はそれもまた問題に言及しました。ありがとう –

+0

どうして私はあなたを得ていないのですか?あなたはより明確に説明できますか? –

関連する問題