2

そこで、単純な協調フィルターに基づいた投稿をユーザーに推奨したいと思います。フィルタは次のように機能するはずです

  1. 私が好きな投稿で私に最も似ている上位n人のユーザーを見つけます(私のメンターグループ)
  2. このメンターグループの中で、私がまだ気に入っていない最も人気のある投稿を見つけてください

だから私は最初の部分を持っています、これは私に私のメンターを与えるでしょう

START me=node:node_auto_index(uname = "mike")
MATCH me-[:LIKES]->posts<-[:LIKES]-mentors
RETURN person.uname, count(posts)
ORDER BY count(posts) DESC LIMIT 20;

そして第2部では、これらのメンターの中から、私がまだ気に入っていない最も気に入った投稿を見つけます。

この2番目の部分を暗号で、またはより効率的な場合はおそらくグレムリンでどのように実行しますか。あるクエリ結果を別のクエリ結果にフィードする必要がある2つの部分からなるクエリでしょうか、それともすべてを1つのクエリにまとめることができますか?

4

2 に答える 2

3

I think this might do what you want:

p = [] as Set
g.V('uname','mike').out('likes').aggregate(p).in('likes').groupCount.cap.transform{it.sort{-it.value}[0..19].keySet()}.scatter.out('likes').except(p).groupCount.cap.sort{-it.value}[0..4]

where

g.V('uname','mike').out('likes').aggregate(p).in('likes').groupCount

gives you the mentor group in a hash map with the values being their weight. Next, we take the top 20 of those (having to sort them through a transform) and then find all the posts that those people like except the posts that you like.

于 2012-11-21T23:57:28.977 に答える