Cypher で Neo4J を使用する
本質的にユーザーの「壁」を取得しようとしています。このウォールには、あなた、あなたの友人による投稿、および投稿コメントがあります。
これまでの私のクエリは次のとおりです。
match (a:Account)-[:FRIEND*0..1]->(friend:Account)-[:POST]->(post:Post)
where a.uid = "u132984734sas"
optional match (post)<-[:COMMENT*0..1]-(comment:Comment)<-[:AUTHOR]-(commentAuthor:Account)
return friend,post,comment,commentAuthor
ORDER BY post.date_created DESC
LIMIT 10
注意してくださいLIMIT 10
まあ、私はこれを半分予想していましたが、PHP の Doctrine が入れ子になった配列をフェッチするときと同じように、トップレベルの投稿と、投稿内の各コメントに対する 1 つのコメントを特徴とする行が返されます。
LIMIT
つまり、コメントを取得せずにこの基準に一致する投稿が 20 件ある場合、基準のおかげで 10 件の実際の投稿が返さ
れます。最初の 10 件の結果内の 1 件の投稿に 2 件のコメントが含まれているとします。 10 件ではなく 9 件の投稿を取り上げます。最初のコメントは、利用可能な場合は常に最初の行に返されるため、resultSet によって返される数を損なうことはありませんが、投稿ごとに追加のコメントがあるたびに減ります。
ここで信頼できる10の結果を得たいのですが、ここで何をすべきかわかりません。
簡潔にするために、私はEveryman\Neo4JPHPを使用しています
50 件の投稿に対してクエリを実行し、上位 10 件の結果のみを選択してプルーニングすることも考えましたが、これは明らかに正しくないようです (笑)