implemented cached walker

This commit is contained in:
pippellia-btc
2025-06-03 15:35:59 +02:00
parent 7d82354540
commit c7b0d8ff94
7 changed files with 306 additions and 48 deletions

View File

@@ -117,19 +117,27 @@ func Personalized(
return map[graph.ID]float64{source: 1.0}, nil
}
followByNode, err := loader.BulkFollows(ctx, follows)
bulk, err := loader.BulkFollows(ctx, follows)
if err != nil {
return nil, fmt.Errorf("Personalized: failed to fetch the two-hop network of source: %w", err)
}
walker := walks.NewCachedWalker(follows, followByNode, loader)
targetWalks := int(float64(targetLenght) * (1 - walks.Alpha))
walker := walks.NewWalker(
walks.WithCapacity(10000),
walks.WithFallback(loader),
)
walks, err := loader.WalksVisitingAny(ctx, append(follows, source), targetWalks)
if err := walker.Load(follows, bulk); err != nil {
return nil, fmt.Errorf("Personalized: failed to load the two-hop network of source: %w", err)
}
targetWalks := int(float64(targetLenght) * (1 - walks.Alpha))
visiting, err := loader.WalksVisitingAny(ctx, append(follows, source), targetWalks)
if err != nil {
return nil, fmt.Errorf("Personalized: failed to fetch the walk: %w", err)
}
pool := newWalkPool(walks)
pool := newWalkPool(visiting)
walk, err := personalizedWalk(ctx, walker, pool, source, targetLenght)
if err != nil {